Scilab创建带矩阵

时间:2013-09-17 06:50:06

标签: sparse-matrix scilab

是否有一种简单的方法可以在Scilab中创建带状矩阵,类似于Mathematica的代码:

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

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

1 个答案:

答案 0 :(得分: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) );