-4

我试图修改以使其适用于 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
4

2 回答 2

4

如果你只想制作一个下三角矩阵,那么

x = randn(n,n);
Lower_tri=tril(x);

在此处阅读有关 tril 和 triu 的信息

于 2013-11-04T15:52:58.687 回答
0

不确定这是否正是它,但也许是朝着正确方向迈出的一步:

n = 3;
x = randn(n,n);
tril(x)

如果性能是一个问题,您可以进一步优化此方法以仅生成您真正需要的随机数。

于 2013-11-04T15:53:29.907 回答