Vectorization fail with sub2ind?
Ältere Kommentare anzeigen
I have the for loop code
for m=1:numel(N,1)
y = N(m,1); % y matrix index
x = N(m,2); % x matrix index
dy = N(m,4); % codfficient
dx = N(m,3); % coefficient
wts(y,x) = wts(y,x)+dx.*dy;
end
I attempted to vectorize this as follows
ind = sub2ind(size(wts),N(:,2),N(:,1));
wts(ind) = wts(ind)+N(:,3).*N(:,4);
Unfortunately, for some reason the result is totally wrong.
This is a followup to a previous question : http://www.mathworks.com/matlabcentral/answers/119845-using-a-vector-of-indices-to-add-values-to-a-matrix
Someone later said that repeated values of "(x,y) / ind" will be erroneous. I don't know what that means, but there are many repeated values of the sub2ind index in my code (lots of addition).
How can this be fixed?
4 Kommentare
per isakson
am 5 Mär. 2014
Bearbeitet: per isakson
am 5 Mär. 2014
>> numel( magic(6),1 )
ans =
1
did you intend
>> size( magic(6),1 )
ans =
6
What is the initial value of wts?
Anand
am 5 Mär. 2014
What do you mean wrong result? The vectorized code looks right to me.
per isakson
am 5 Mär. 2014
Bearbeitet: per isakson
am 5 Mär. 2014
Why not show an executable example based on a for-loop?
Christopher
am 5 Mär. 2014
Bearbeitet: Christopher
am 5 Mär. 2014
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Matrix Indexing finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!