# Error with find function in a for loop

3 vues (au cours des 30 derniers jours)
Kafayat Olayinka le 6 Fév 2020
Commenté : TADA le 6 Fév 2020
Time, height, and temperature variable all have the same array size. I want find temperature at altitude greater than 6km. I also want 6kmtemp to be the same size as temperature. However, after running this code, the result was an empty array. t3 is 0*0. How can I make this find function work in a for loop. BTW, the find function worked when i didnt have it in the loop. However, the array size changed. What am i missing? Thanks
for i=1:length(Time)
t3=find(height(i)>=6);
6kmtemp(i,t3)=temperature(t3);
end
##### 2 commentairesAfficher AucuneMasquer Aucune
Star Strider le 6 Fév 2020
Note that:
6kmtemp
is not an acceptable variable name, and will throw an error.
Consider:
temp6km
Kafayat Olayinka le 6 Fév 2020
That is true. however, that was not the error. After running that code, t3 array is empty. meaning the find function in the loop didn't work.

Connectez-vous pour commenter.

### Réponse acceptée

Find accepts a logical vector and returns all the indices containing 1.
The problem is you are giving find a scalar value so it's going to return an empty value when height(i) < 6 and 1 whenever height(i) >= 6
Did you consider not using find at all? Instead you can switch to logical indexing:
6kmtemp = nan(size(temperature));
atLeast6km = height >= 6;
6kmtemp(atLeast6km) = temperature(atLeast6km);
You should preallocate 6kmtemp to whatever value you want the "empty" cells to have, I used NaN but you can define your own constants according to what makes sense for you
##### 4 commentairesAfficher 2 commentaires plus anciensMasquer 2 commentaires plus anciens
Kafayat Olayinka le 6 Fév 2020
Thank you. It worked!
Cheers

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Logical dans Help Center et File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by