Time series code not quite right, thoughts?

1 回表示 (過去 30 日間)
Olivia
Olivia 2015 年 9 月 21 日
コメント済み: Rena Berman 2017 年 1 月 24 日
AR(1) process:
T=10000;
e1 = randn(T/4,1);
e2 = randn(T/4,1);
e3 = randn(T/4,1);
e4 = randn(T/4,1);
e=[e1,e2,e3,e4];
a1=ones(T/4,1);
a2=ones(T/4,1);
a3=ones(T/4,1);
a4=ones(T/4,1);
a=[a1,a2,a3,a4];
rho = 1.5;
time = 1:T-1; % for plotting purposes only
Y(1) = 0; %Initial condition
for i=2:T
Y(i,1) = a + e(i) + rho*Y(i-1,1);
end
plot(time, Y)
_
Am getting the error: Subscripted assignment dimension mismatch. How should I correct my for loop to generate the attached?
  1 件のコメント
Rena Berman
Rena Berman 2017 年 1 月 24 日
(Answers dev) Restored question.

サインインしてコメントする。

回答 (2 件)

Jae Song
Jae Song 2015 年 9 月 21 日
I don't know if this is the plot you were trying to generate. I made the following correction to make the plot to work.
1) a and e seem same size; so I made a and e using the same index. 2) y seems an array 3) plot: time and y should have same size.
T=10000;
e1 = randn(T/4,1); e2 = randn(T/4,1); e3 = randn(T/4,1); e4 = randn(T/4,1);
e=[e1,e2,e3,e4];
a1=ones(T/4,1); a2=ones(T/4,1); a3=ones(T/4,1); a4=ones(T/4,1);
a=[a1,a2,a3,a4];
rho = 1.5; time = 1:T-1; % for plotting purposes only
Y(1) = 0; %Initial condition
for i=2:T
Y(i) = a(i) + e(i) + rho*Y(i-1);
end
plot(time, Y(2:end))
  1 件のコメント
Joseph Cheng
Joseph Cheng 2015 年 9 月 22 日
the rho of 1.5 really makes it out of hand. as the e(i) cannot compensate for a 150% change from the previous number. are you sure you want a rho of 1.5?

サインインしてコメントする。


Joseph Cheng
Joseph Cheng 2015 年 9 月 22 日
are you looking to something more like this?
T=10000;
%why generate e it 4 times when randn can generate it for you
e = randn(T/4,4);
%generate some offset within the 4 different sections
a=[randi(10,1,4)];
a = repmat(a,T/4,1);
rho = 1.5/100; %rho is probably in percentage
time = 1:T; % for plotting purposes only
%preallocate Y
Y = zeros(size(a));
%generate a new initial condition for each section or keep Y =0;'
Y(1,:) = randi(10,1,4); %Initial condition
%perform this if each segment isn't influenced by each other
for i=2:T/4
Y(i,:) = a(i,:) + e(i,:) + rho*Y(i-1,:);
end
% perform this if each segment is influenced by their predecessor.
for i=2:T
Y(i) = a(i) + e(i) + rho*Y(i-1);
end
plot(time, Y(:))
  1 件のコメント
Joseph Cheng
Joseph Cheng 2015 年 9 月 22 日
see my example

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMultirate and Multistage Filters についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by