【发布时间】:2014-09-29 21:36:07
【问题描述】:
我在 Matlab 中工作,我遇到了下一个问题:
我有一个由nx2 元素组成的B 矩阵,其中包含分配大稀疏矩阵A(几乎是500,000x80,000)的索引。对于B 的每一行,第一列是A 的列索引,必须包含1,第二列是A 的列索引,必须包含-1。
例如:
B= 1 3
2 5
1 5
4 1
5 2
对于这个 B 矩阵,对应的 A 矩阵必须是这样的:
A= 1 0 -1 0 0
0 1 0 0 -1
1 0 0 0 -1
-1 0 0 1 0
0 -1 0 0 1
因此,对于B 的i 行,A 的相应行i 必须全为零,A(i,B(i,1))=1 和A(i,B(i,2))=-1 除外
在 B 的所有行上使用 for 循环非常容易,但速度非常慢。我还尝试了下一个公式:
A(:,B(:,1))=1
A(:,B(:,2))=-1
但是 matlab 给了我一个“内存不足错误”。如果有人知道实现此目标的更有效方法,请告诉我。
提前致谢!
【问题讨论】:
-
您的代码用 1 或 -1 填充整列。这就是你内存不足的原因(结果不会是你想要的)