3列ではなくn列で機能するように変更しようとしましたが、機能していません。p1 と p2 をベクトルに変更したのと同じように、それを機能させることができません。それを n 列にするために別のループが必要ですか?
n=10;
p1 = 0;
p2 = 0;
x = randn(n,1);
h = [1;2;3]
t(1,:) = [x(1) p1 p2];
v(:,1) = randn(n,1);
y(1) = t(1,:) * h + randn(1,1);
for k=2:n
t(k,:) = [x(k) x(k-1) p2];
y(k,1) = t(k,:) * h + v(k,1);
p2 = x(k-1);
end
現在、nx3行列の作業コードがあり、出力は次のようになります
t = [ 1 0 0; 2 1 0; 3 2 1;4 3 2; 5 4 3; ....; k k-1 k-2]
しかし、t 行列の最初のベクトルを使用して t(:,1) をシフトし、最初の値が同じであるテプリッツにすることで、コードをより多くの列に変更するのに問題があります。
これは私が編集しようとした私のコードですが、どこにも近づきませんでした。
function [t,y] = var(n,h)
x = rand(n,1);
d = zeros(1,h(end));
d(1) = x(1);
t(1,:) = d;
v(:,1) = randn(n,1);
y(1) = t(1,:) * h + randn(1,1);
for k=2:n
t(k,:) = [x(k) x(k-1):x(k-h(end)+1)];
y(k,1) = t(k,:) * h + v(k,1);
xp2 = x(k-1);
end