我试图修改以使其适用于 n 列而不是 3 列,但它不起作用。就像将 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) 以使其成为第一个值相同的 toeplitz。
这是我试图编辑的代码,但我没有接近。
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