![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.01.2010
Сообщений: 95
|
![]()
Добрый день!
Может у кого-нибудь есть пример программы работы метода "Гусеница" написанный в MatLab ? |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 18.01.2010
Сообщений: 95
|
![]()
Вот ссылка на сам алгоритм http://www.masters.donntu.edu.ua/200...rary/art09.htm
Вот мой m-file function [sing_values,U,V] = ssa(x, L) x = [1 2 3 2 1 2 3 2 1 2 3]'; %t = [1:length(x)]'; N=6; % последовательность N равноотстоющих значений некоторой функции f(t) L=4; %длина гусеницы K=N-L+1;% K must be >=1! if K<1 errordlg('Wrong L. SSA is cancelled.', 'Error'); return end %form trajectory matrix X=zeros(L,K); for i=1:L X(i, ![]() end %================================== ============ %Мой вставленный кусок программы=============== %V = (1/k)XTX============================== ==== W=(1/L)*X'*X; %LA=eig(W);% вектор собственных значений матрицы W ортогональная матрица собственных векторов матрицы %[R, D] = eig(W);%ычисляет диагональную матрицу D собственных значений и матрицу R правых собственных векторов %Следующий шаг, как обычно в АГК, состоит в вычислении собственных чисел и %собственных векторов матрицы V %W=R*D*R'; %================================== ============ %Выполним её svd-разложение:C = V\Lambda V^T % prepare to finite rank time series M=min( rank(W), L ); %SVD [U,S,V] = svd(W); % U_i is a column in U, {V_i} are the first L columns of V %================================== =============================== %Далее рассмотрим систему главных компонен GO=V*X'; %================================== =============================== %extract sing.values and cut them to the rank if rank<L, %it's necessary for finite rank time series sing_values=diag(S); if M<L %if rank(ts)<L sing_values=sing_values(1:M); end %cut eigen vectors to the rank if rank<L if M<L %if rank(ts)<L U=U(:,1:M); end %extract factor vectors V=V(:,1:M); x1 = ssa(x, L); %[sing_values,U,V] = ssa (t, L); %t = [t; t(end)+((t(2)-t(1))*[1:N]')]; %x = [x; NaN*ones(N,1)]; %plot(t',x, 'b-'); %plot(t',ssa(t, L), 'r-'); Но ом мне выдает ошибку Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware that exceeding your available stack space can crash MATLAB and/or your computer. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. | воваава | Помощь студентам | 3 | 01.12.2011 12:50 |
Ошибка:является "поле" но используется как "метод" | hitman47IT | Помощь студентам | 0 | 22.11.2011 20:55 |
Как обойти "преобразование типа из "string" в "float" невозможно" | lexluter1988 | Помощь студентам | 1 | 07.08.2010 12:23 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |