Как применить Iddata в расчете? - PullRequest
1 голос
/ 19 марта 2012

Я пытаюсь выяснить, как объединить входные и выходные данные в модель ARX, а затем применить их в формуле BIC (Байесовский информационный критерий).Ниже приведен код, над которым я сейчас работаю:

for i=1:30; %% Set Model Order
    data=iddata(output,input,1);
    model = arx(data,[8 9 i]);
    yp = predict(model,data);
    ye = regress(data,yp{1,1}(1:4018,1));
    M(i) = var(yp);
    BIC(i)=(N+i*(log(N)-1))/(N-i)*log(M(i));
end

Но он не работает.Он продолжает выдавать ошибку, похожую на приведенную ниже:

"Синтаксис" Данные {...} "не поддерживается. Используйте команду" getexp "для извлечения отдельных экспериментов из объекта IDDATA".Я не понял, что это значит.Может кто-нибудь объяснить мне, и где я могу сделать ошибку в своем куске кода?

Обновление: я пытался сделать что-то вроде ниже, пока нет ошибки.Но тогда график для этого BIC будет всегда прямой.Что-то не так с моей частью регрессии?как мне поступить для регрессии?

N=length(rainfall_model);
for i=1:20; % Set Model Order
    data=iddata(rainfall_model,tmax_model,1);
    %d1 = getexp(data,1);
    model = arx(data,[50 9 i]);
    yp=predict(model,data);
    y = yp.y ;
    d1 = data.y ;
    ye = (d1).^2 - (y).^2;
    M(i)= mse(ye);
    BIC(i)=(N+i*(log(N)-1))/(N-i)*log(M(i));
end

1 Ответ

1 голос
/ 19 марта 2012

В вашем примере кода, yp, возвращенный из команды 'Предсказание', является объектом iddata, и нотация ячейки {{}} не может использоваться с ним.Если вы хотите выполнить регрессию, вы должны извлечь из нее входные (yp.u) или выходные (yp.y) данные.

Кроме того, команда 'regress' не работает с объектами idddata,так как это не функция панели инструментов идентификации системы.Снова вы должны извлечь входные или выходные данные из переменных «data» и «yp» перед их вызовом.

Обновление: чтобы увидеть, что находится в объектах iddata (data и yp), выполните

get(data)
get(yp)

Вы увидите, что вы можете извлечь выходные данные двумя эквивалентными способами:

yp.y
yp.OutputData

Аналогично для входных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...