Azzera filtri
Azzera filtri

What's wrong with my for loop?....error is that matric dimensions must match.

1 visualizzazione (ultimi 30 giorni)
Bii=B1{ii};
for ii= 1:N
Bii=B1{ii};
[x,y]=find(B1{ii}==max(max(B1{ii})));
[X,Y]=find(B1{1}==max(max(B1{1})));
DIFF=[x,y]-[X,Y]
end
.....basically I'm assigning images to a matrix Bii....each image is an element of the matrix...and I'm trying to find the x,y coordinates of the brightest spot on each image and subtracting that of the first frame from each of them...
IT SAYS ERROR IN USING - (the minus sign)...MATRIX DIMENSIONS MUST AGREE.
  2 Commenti
Yagnaseni Roy
Yagnaseni Roy il 22 Ott 2011
Note that this is supposed to be a modification of the following code that does work...
Bii=B1{ii};
for ii= 1:N
Bii=B1{ii};
[x,y]=find(B1{ii}==max(max(B1{ii})));
[x,y]=find(B1{ii}==max(max(B1{ii})))
end

Accedi per commentare.

Risposta accettata

Fangjun Jiang
Fangjun Jiang il 22 Ott 2011
The constructed matrix [x,y] and [X,Y] don't have the same size so you can't do subtraction. see
rand(3,1)-rand(2,4)
  29 Commenti
Yagnaseni Roy
Yagnaseni Roy il 24 Ott 2011
yeah! But then all's well that ends well...hopefully this should bring an end to my project too...hope he doesn't ask me to modify it too much!!
Walter Roberson
Walter Roberson il 24 Ott 2011
I did say hours ago that the code shown had no outputs. You were overwriting [x,y] each pass through the loop, and you were not doing anything calculated indices.
Memo for future reference: anything that appears un-indexed on the left-hand side of an assignment in a "for" loop will be overwritten on the next iteration. If you want the results to be saved for after the loop, you need an indexed assignment at some point in the loop.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by