2
給定一個稀疏矩陣在MATLAB甲和平均在它的列米非零元素,反正是有從平均減去在每列中的非零元素每列和避免循環列?刪除列從列的非零項意味着
我正在尋找高效的解決方案。如果可以使用'bsxfun'可能是一個解決方案。
感謝
給定一個稀疏矩陣在MATLAB甲和平均在它的列米非零元素,反正是有從平均減去在每列中的非零元素每列和避免循環列?刪除列從列的非零項意味着
我正在尋找高效的解決方案。如果可以使用'bsxfun'可能是一個解決方案。
感謝
您可以使用find
第二輸出,以獲得列索引;用那些索引到m
做減法;並把結果返回到A
使用logical indexing:
A = sparse([0 0 0 0; 1 0 3 2; 2 1 0 5]); %// example data
m = [1.5 1 3 3.5]; %// vector of mean of nonzero elements of each column
m = m(:);
[~, jj, vv] = find(A);
A(logical(A)) = vv - m(jj);
原始A
:
>> full(A)
ans =
0 0 0 0
1 0 3 2
2 1 0 5
最終A
:
>> full(A)
ans =
0 0 0 0
-0.5000 0 0 -1.5000
0.5000 0 0 1.5000
真棒!謝謝路易斯 – YAS
@YAS歡迎!很高興這就是你想要的 –
它當然是,速度非常好。 – YAS