【问题标题】:Create a lower triangular matrix from a given vector从给定向量创建下三角矩阵
【发布时间】:2012-02-12 03:00:04
【问题描述】:

我的问题如下:我有一个向量作为

[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 函数但找不到解决方案。

【问题讨论】:

    标签: matlab matrix vectorization


    【解决方案1】:

    试试这个:

    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
    

    【讨论】:

    • 好吧,我根据 Diego 的回答找到了另一种方法:tril(repmat(A, length(A),1)) 但你的也是正确的!谢谢
    【解决方案2】:

    如果 A 是你的向量,你可以这样做

    M=repmat(A, length(A), 1) .* tril(ones(length(A),length(A)),0)

    【讨论】:

    • 这几乎是完美的工作,除了我们需要将 -1 更改为 0。我的意思是工作版本是:repmat(A, length(A), 1) .* tril(ones(length (A),length(A)),0) 非常感谢ssss
    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多