Filter löschen
Filter löschen

Hello there, I have a short question, as for some reason a for loop doesn't function.

1 Ansicht (letzte 30 Tage)
RT is a matrix and krit_out1 is a vector. There is no error message, but the loop is stuck in the first row of the matrix and I don't find the reason.. Can someone help me?
for i = 1:50
RT(RT(:,i)> krit_out1(i)) = NaN;
end

Akzeptierte Antwort

Birdman
Birdman am 23 Okt. 2017
RT=ones(50,50);krit_out1=zeros(50,1);
for i=1:50
for j=1:50
if(RT(j,i)>krit_out1(j))
RT(j,i)=NaN;
end
end
end
Try this.
  2 Kommentare
Jan
Jan am 23 Okt. 2017
krit_out1( i ) instead of j.
The vectorization of such loops is not only nice and processed efficiently, but without indices, there are less chances for typos.
Soabon
Soabon am 24 Okt. 2017
Yes, with the correction this is what I needed (and it works with MATLAB 2015b). Thanx!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Jan
Jan am 23 Okt. 2017
Bearbeitet: Jan am 24 Okt. 2017
Or without a loop:
RT(RT > krit_out1(:).') = NaN; % >= R2016b: Auto-Expanding
For older Matlab versions:
index = bsxfun(@gt, RT, krit_out1(:).'); % [EDITED]
RT(index) = NaN;
  4 Kommentare
Soabon
Soabon am 26 Okt. 2017
Bearbeitet: Soabon am 26 Okt. 2017
The size of RT is 51 x 50 and the length of krit_out1 is 50. Does that make a difference for the solution?

Melden Sie sich an, um zu kommentieren.


Ray
Ray am 23 Okt. 2017
Try the following. It looks like you intend to operate on the ith column using the ith element of a vector called krit_out1:
for i = 1:50
RT(RT(:,i)> krit_out1(i) ,i) = NaN;
end
  4 Kommentare
Jan
Jan am 24 Okt. 2017
Bearbeitet: Jan am 24 Okt. 2017
Ray's code uses only the same indices as the code you have posted. Therefore this piece of code cannot produce the error message, except if you are using a different loop counter, but insert "i".
This method is better than using another loop.
Soabon
Soabon am 26 Okt. 2017
You're right, I applied the code a second time, now it works. I don't know why there was the error message before.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements 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!

Translated by