0

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

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

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

4

1 回答 1

1

我认为您正在寻找诊断功能。它创建一个足够大的矩阵来包含指定的值。如果将其与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) );
于 2013-09-17T09:03:01.493 回答