如何在matlab中使用上三角零来制作j列矩阵

时间:2013-11-04 15:42:01

标签: matlab vector

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

2 个答案:

答案 0 :(得分:4)

如果您只想制作一个较低的三角矩阵,那么

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

在这里阅读tril和triu tril

答案 1 :(得分:0)

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

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

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