3
感覺應該有一個簡單的解決方案,但我不能找到它訪問在稀疏矩陣的多個元素:MATLAB使用行和列索引矢量
我有稀疏矩陣A
B
具有相同尺寸n*n
。我想創建矩陣C
,它複製A
中的值,其中B
非零。
這是我的方法:
[r,c,v] = find(B);
% now I'd like to create an array of values using indices r and c,
% but this doesn't work (wrong syntax)
v2 = A(r,c);
% This won't work either
idx = find(B); % linear indexing, too high-dimensional
v2 = A(idx);
% and create C
C = sparse(r,c,v2,n,n);
這裏有一些更多的細節:
- 我的矩陣是非常大的,所以解決方案必須有效。不幸的是,
C(B~=0) = B(B~=0);
不會這樣做。 - 由於矩陣太大,線性索引不起作用(
Matrix is too large to return linear indices.
)。
是否真的沒有辦法使用二維索引?
感謝您的幫助!
你可以試試'C = A。*(B〜= 0);'? –
是的,非常感謝,這工作!如果你想發佈它作爲答案,我可以正式接受它:) – Lisa
當然。在您對數據進行嘗試之前,我並不完全確定,因爲我們正在談論效率。感謝信用。 –