我正在使用以下命令在MATLAB中加载稀疏矩阵:
A = spconvert(load('mymatrix.txt'));
我知道我的矩阵的维度是1222 x 1222,但是矩阵的加载为1220 x 1221.我知道MATLAB在稀疏保存时不可能推断出矩阵的实际大小。 / p>
使A尺寸合适的可能解决方案是在mymatrix.txt中包含一行,内容为“1222 1222 0”。但我有数百个矩阵,我不想在所有矩阵中都这样做。
如何让MATLAB将矩阵的大小更改为1222 x 1222?
答案 0 :(得分:2)
我找到了以下问题的解决方案,简单而简短,但不如我希望的那样优雅:
A = spconvert(load('mymatrix.txt'));
if size(A,1) ~= pSize || size(A,2) ~= pSize
A(pSize,pSize) = 0;
end
其中pSize是矩阵的首选大小。所以我加载矩阵,如果尺寸不是我想要的,我在右下角插入一个0元素。
答案 1 :(得分:1)
对不起,这篇帖子更像是一对澄清问题,而不是答案。
首先,问题是'load'命令还是'spconvert'?如果你这样做,
B = load('mymatrix.txt')
是你想要的B尺寸?如果没有,那么你可以使用'textread'或'fread'来编写一个函数,在输入'spconvert'之前创建正确大小的矩阵。
其次,你说你正在加载几个矩阵。您正在加载的所有矩阵中的问题是否一致。如同,矩阵总是最终减少两行,比预期的少一列?
答案 2 :(得分:1)
我遇到了同样的问题,这是我遇到的解决方案:
nRows = 1222;
nCols = 1222;
A = spconvert(load('mymatrix.txt'));
[i,j,s] = find(A);
A = sparse(i,j,s,nRows,nCols);
这是对其中一个例子here的改编。