フィルターのクリア

How to do a quick division between a column array and a matrix?

4 ビュー (過去 30 日間)
Benson Gou
Benson Gou 2019 年 1 月 28 日
コメント済み: Benson Gou 2019 年 1 月 28 日
Hello, All,
I want to divid a column array b (N x 1) by each column in a big sparse matrix A (N x M). My code is as follows:
dividCol = zeros(N,M);
for i = 1 : M
nonCol = find(abs(A(:,i))>0);
dividCol(nonCol,i) = b(nonCol)./A(nonCol,i);
end
But it is very slow. I do know if there exist a faster approach to write this code.
Thanks a lot in advance.
Benson

採用された回答

Omer Yasin Birey
Omer Yasin Birey 2019 年 1 月 28 日
編集済み: Omer Yasin Birey 2019 年 1 月 28 日
Hi Benson, try this
% b = randi(25,25,1);
% A = randi(25,25,5);
[row,col] = find(abs(A(:,:))>0);
dividCol = bsxfun(@rdivide,b(row,1),A(row,col));
  3 件のコメント
Omer Yasin Birey
Omer Yasin Birey 2019 年 1 月 28 日
Yes I checked the code and it does every operation twice. I had to use loop and updated the code. Try it instead.
% b = randi(25,7,1);
% A = randi(25,7,14);
for i = 1:M
nonCol = find(abs(A(:,i))>0);
dividCol = bsxfun(@rdivide,b(nonCol),A(nonCol,i));
end
Benson Gou
Benson Gou 2019 年 1 月 28 日
Omer,
Thanks for your prompt reply.
Is it possible to do this without using a loop? because loop normally takes more time.
Benson

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDenoising and Compression についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by