【问题标题】:Scilab create band matrixScilab 创建带状矩阵
【发布时间】:2013-09-17 06:50:06
【问题描述】:

有没有一种简单的方法可以在 Scilab 中制作带状矩阵,类似于 Mathematica 的以下代码:

mat=Normal@SparseArray[{Band[{1,1}]->1,Band[{1,4}]->2,Band[{3,1}]->-3},{10,10}];

?我知道有 sparse() 函数用于创建稀疏矩阵,然后我可以通过 full() 将其转换为正常形式。但似乎我只能为sparse() 指定单个条目,而不是乐队。我在文档中遗漏了什么吗?还是我必须“手动”创建它(即为此编写一些程序)?

【问题讨论】:

    标签: sparse-matrix scilab


    【解决方案1】:

    我认为您正在寻找 diag 函数。它创建一个足够大的矩阵来包含指定的值。如果将其与linspace 函数结合使用,则可以创建波段。

    工作示例

    clear;
    
    m = 10;
    
    band1 = sparse(diag( ones(m-1,1),1));
    band2 = sparse(diag( linspace(1,4,m-2),2) );
    band3 = sparse(diag( linspace(3,1,m-3),-3) );
    
    mat = band1 + band2 + band3;
    
    disp( full(mat) );
    

    【讨论】:

    • 太棒了。正是我需要的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-03-16
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多