How to do a quick division between a column array and a matrix?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Benson Gou
am 28 Jan. 2019
Kommentiert: Benson Gou
am 28 Jan. 2019
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
0 Kommentare
Akzeptierte Antwort
Omer Yasin Birey
am 28 Jan. 2019
Bearbeitet: Omer Yasin Birey
am 28 Jan. 2019
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 Kommentare
Omer Yasin Birey
am 28 Jan. 2019
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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Denoising and Compression finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!