我尝试修改以使其适用于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
答案 0 :(得分:4)
答案 1 :(得分:0)
不确定这是否正是如此,但也许是朝着正确方向迈出的一步:
n = 3;
x = randn(n,n);
tril(x)
如果性能问题,您可以进一步优化此方法,只生成您真正需要的随机数。