从给定向量创建一个下三角矩阵

3
我的问题如下:我有一个向量,如下所示:

[3,4,5,6,7]

我想创建一个矩阵,如下所示:
3 0 0 0 0   
3 4 0 0 0   
3 4 5 0 0   
3 4 5 6 0   
3 4 5 6 7 

然而,由于最终可能会遇到大小问题,我不想使用for循环。 我正在考虑使用flipudfliprlhankeltoeplitz函数,但无法找到解决方案。

2个回答

6

试试这个:

x = [3,4,5,6,7]
tril(ones(length(x),1)*x)

ans =

 3     0     0     0     0
 3     4     0     0     0
 3     4     5     0     0
 3     4     5     6     0
 3     4     5     6     7

好的,根据迭戈的回答,我找到了另一种方法:tril(repmat(A, length(A),1))。但你的方法也是正确的!谢谢。 - emper

1
如果A是你的向量,你可以执行:
M = repmat(A, length(A), 1) .* tril(ones(length(A),length(A)),0)

1
这个程序几乎完美地运行,除了我们需要将-1更改为0。我的意思是工作版本是:repmat(A,length(A),1).* tril(ones(length(A),length(A)),0)。非常感谢。 - emper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接