在稀疏矩阵中分配矩阵时内存不足

时间:2017-05-16 12:31:09

标签: matlab

A = sparse(10, 10);
b = [2, 2; 4, 3; 5, 4]
b =
    2  2 
    4  3
    5  4

我想让A成为:

A =
   (2, 2)    1
   (4, 3)    1
   (5, 4)    1

似乎我的问题是我得到了:

A(b(:,1), b(:, 2)) = 1

A = 
(2, 2)   1
(4, 2)   1
(5, 2)   1
(2, 3)   1
(4, 3)   1
(5, 3)   1
(2, 4)   1
(4, 4)   1
(5, 4)   1

我的问题是我正在分配而不是10>>>> 1134890
而不是让b由3行组成,它由〜3M行组成。代码崩溃了。

  

内存不足。键入HELP MEMORY以获取选项。

据我所知,我的矩阵构建错误,因此会添加更多的点并导致这种情况。

如何正确实现所需的输出?谢谢!

修改

b表示我正在使用以下内容从内存中读取的文本文件:importdata(pathToFile)。我可以看到b正在构建中。

1 个答案:

答案 0 :(得分:4)

你只是错误填写你的矩阵。

使用

填充并创建它
A

如果您无法避免预先分配index=sub2ind([10,10],b(:,1),b(:,2)); A(index)=1; (老实说,请不要这样做),那么您可以通过以下方式填写:

.leaflet-control-layers-overlays input[type='checkbox'] {
   display: block !important;
 }