Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
N维索引仅允许用于完整矩阵。-使用稀疏命令MATLAB解决问题_Matlab_Sparse Matrix - Fatal编程技术网

N维索引仅允许用于完整矩阵。-使用稀疏命令MATLAB解决问题

N维索引仅允许用于完整矩阵。-使用稀疏命令MATLAB解决问题,matlab,sparse-matrix,Matlab,Sparse Matrix,我想将不同稀疏矩阵的数组存储到单个矩阵中,如下所示: A(:,:,1) = sparse([0 0 1; 0 1 0]); A(:,:,2) = sparse([0 0 1; 0 0 0]); A(:,:,3) = sparse([1 0 1; 0 0 0]); A(:,:,4) = sparse([0 0 1; 0 1 0]); 但是,我得到了一个错误: 仅允许完整矩阵使用N维索引。 似乎其他人也遇到了这个问题: 但是“bug修复”的链接被破坏了,我不知道如何处理这个问题。我知道我可

我想将不同稀疏矩阵的数组存储到单个矩阵中,如下所示:

A(:,:,1) = sparse([0 0 1; 0 1 0]);

A(:,:,2) = sparse([0 0 1; 0 0 0]);

A(:,:,3) = sparse([1 0 1; 0 0 0]);

A(:,:,4) = sparse([0 0 1; 0 1 0]);
但是,我得到了一个错误:

仅允许完整矩阵使用N维索引。

似乎其他人也遇到了这个问题:

但是“bug修复”的链接被破坏了,我不知道如何处理这个问题。我知道我可以使用细胞阵列,但我知道它们很慢,我正在努力避免它们。我想我也可以使用full()命令,但我不确定这是否是最好(最快)的方法


有什么想法吗?

简单地说,你不能在MATLAB中创建N维稀疏数组,它们必须是2D矩阵

此外,支持的类型要么是
double
要么是
logical
(虽然可以创建
单个
稀疏矩阵,但它们最终对任何实际使用都是无用的)

如果要存储多个稀疏矩阵,必须使用容器类型(如单元数组或结构)



兰特:声称细胞阵列速度慢是没有根据的。如果在
arr(:,:,i)
arr{i}
上循环,则没有多大关系,除非目标是首先对整个ND数组执行矢量化操作(稀疏数组不支持)。所以只要把一个单元格数组想象成一个指针数组,
arr{i}
就是简单地去引用指针以获得另一个数组…

您需要稀疏矩阵吗?一般来说,它们比普通矩阵慢,但有时由于内存限制而不可避免。顺便说一句,链接与此无关,这里是一个缓存副本: