Срочно нужна помощь по Matlab

IRINA76

Поставлена такая задача:
дана динамическая система

где b2 = 1, Омега - угловая скорость вращения Земли вокруг своей оси
проверить наблюдаемость системы по измерению величины y1 . Выбрать алгоритм оценивания y3-y4 по измерению величины y1 с погрешностью в виде белого шума с единичной интенсивностью.
C наблюдаемостью проблем не было, но вот дальше я не понимаю, что надо делать. И еще одно условие поставили - все делать с помощью встроенных функций. Могу выложить начало программы, помогите, пожалуйста...

IRINA76

вот первая часть, в которой я уверен:
 
W = 0.729e-4; % ugl. skor. Zemli [1/s]
b2 = 1;
A = [0 0 1 0; 0 0 0 1; 0 0 0 2*W; 0 3*W*W -2*W 0];
B = [0 0 0 b2]';
C = [0 1 0 0];
D = [0];
r = rank(obsv(A,C;
[n, n] = size(A);
if r < n % videlenie nabludaemogo podpr-va
    disp('nenabludaema');
    [AA, BB, CC, T, K] = obsvf (A, B, C);
    k=0;
    A = zeros(r, r);
    B = zeros(r, 1);
    C = zeros(1, r);
    
    for i=1:r
     B(i) = BB(n-r+i);
     C(i) = CC(n-r+i);
     for j=1:r
     A(i,j) = AA(n-r+i,n-r+j);
     if abs(A(i,j<1.e-16
     A(i,j) = 0;
     end
     end
    end
    
    if r == rank(obsv(A,C
     disp('videleno nabl. podpr-vo');
    end
else
    disp('nabludaema');
end

а вот дальше мне нужна помощь, сначала надо пропустить систему через фильтр калмана а затем составить оцениватель (или это можно сразу сделать?)
Для тех, кто знает данную тему и функции, эта прога обойдется в инут 20-30...

Niklz


Выбрать алгоритм оценивания y3-y4 по измерению величины y1 с погрешностью в виде белого шума с единичной интенсивностью.
Что-то я не понял, что значит выбрать алгоритм оценивания.
Если шум у тебя Гауссовский - да, просто применяешь к наблюдениям рекуррентные отношения фильтра Калмана и они тебе дадут оценки неизвестных y3-y4.
Или что требуется?

IRINA76

да,только сразу не получалось к функции kalman обратиться, пришлось вводить шумы нулевой интенсивности:

W = 0.729e-4; % ugl. skor. Zemli [1/c]
b2 = 1;
A = [0 0 1 0; 0 0 0 1; 0 0 0 2*W; 0 3*W*W -2*W 0];
B = [0 0 0 b2]';
C=[0 0 0 0; 0 1 0 0];
D = [1;0];
r = rank(obsv(A,C;
n = size(A,1);
if r < n % videlenie nabludaemogo podpr-va
disp('nenabludaema');
[AA, BB, CC, T, K] = obsvf (A, B, C);

B=BB(n-r+1:end);
C=CC(:,n-r+1:end);
A=AA(n-r+1:end,n-r+1:end);
A(abs(A)<1.0e-16)=0;

if r == rank(obsv(A,C
disp('videleno nabl. podpr-vo');
end
else
disp('nabludaema');
end
G=eye(r);
H=ones(2,r);
SYS=ss(A,[B G],C,[D H]);
QN = 1.0e-20*eye(r);
RN =[ 1];
NN=zeros(3,1);
[KEST,L,P] = kalman(SYS, QN, RN,NN,2,1);

IRINA76

Теперь мне надо разобраться с другой задачей, что происходит в этих строчках:

M = series(SYS,KEST);
M.c(2:4,4:6) = -eye(3); M.c(1,6) = 0; M.c(1,3) = 0;
M.d(1,1) = 1;
[y, t] = step(M);
subplot(3,1,1);
plot(t,y(:,2,1;
subplot(3,1,2);
plot(t,y(:,3,1;
subplot(3,1,3);
plot(t,y(:,4,1;
Здесь необходимы знания МУСов, я только понимаю, что мы как-то возмущаем систему, или что-то подобное...

IRINA76

ну неужели никто не понимает этот код? :(

Niklz

ну ты посмотри в документации тулбокса, которым ты пользуешься для фильтра, что делает функция series и что она дает на выходе.
вообще, ты бы для начала написал, каким тулбоксом пользуешься - тут же не телепаты.

IRINA76

функция series и step из Control Sistem Toolbox. про step написано, что выдает покоординатные ответы на каждый вход. В данной задаче, я думаю, что первый вход это управление, остальные 3 - белый шум (но не уверен вопрос: какое все-таки тут управление?
Оставить комментарий
Имя или ник:
Комментарий: