Save values in a loop in a vector

Hi !
I would need some help for my home assignment cause im stucked. I need to iterate thru a vector and look for some values that are equal to 1.00, 0.80, 0.60, 0.40, 0.20 and 0.10. Then i need to store those values in another vector, how do i do this? Below u see the code for plotting those but i need to save them all in a vector so that i can make a nice table!
for i=1:size(d)
if d(i)==1.00000
disp(h(i))
elseif d(i)==0.80000
disp(h(i))
elseif d(i)==0.60000
disp(h(i))
elseif d(i)==0.40000
disp(h(i))
elseif d(i)==0.20000
disp(h(i))
elseif d(i)==0.10000
disp(h(i))
end
end

Réponses (2)

mbonus
mbonus le 8 Sep 2016
Modifié(e) : mbonus le 8 Sep 2016
before the loop
v = zeros(size(d));
then just insert this line for each part of the if structure
v(i) = d(i);
If you need to get rid of the indexes with no values you can do this after the loop
v(find(0)) = [];

9 commentaires

mbonus
mbonus le 8 Sep 2016
a faster way to code though would be to recreate the loop and write it once rather than in the if structure if all of d meets the criteria.
Daniel
Daniel le 8 Sep 2016
Thank you! The problem is that i got a error saying:
Error using zeros Requested 25001x25001 (4.7GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long time and cause MATLAB to become unresponsive. See array size limit or preference panel for more information.
mbonus
mbonus le 8 Sep 2016
Modifié(e) : mbonus le 8 Sep 2016
What is the size of d? I may have messed up with the zeros(), try
zeros(size(d))
Daniel
Daniel le 8 Sep 2016
its an 25001x1 vector =)
mbonus
mbonus le 8 Sep 2016
I messed up with zeros(). does the corrected version work?
Daniel
Daniel le 9 Sep 2016
Hi again!
This wasnt what i wanted. I just need to know the i`s so that i can find the corresponding value in another vector. So, the vector d contains different denstity values corresponding to different altitudes. So, im saying that, find the i`s for different values for p and then use the i`s to find the corresponding values in z :)
So, now i have this:
H = []; Z = [];
for i=1:size(d)
if d(i)==1.00000
Z(i) = z(i);
H(i) = h(i);
elseif d(i)==0.80000
Z(i) = z(i);
H(i) = h(i);
elseif d(i)==0.60000
Z(i) = z(i);
H(i) = h(i);
elseif d(i)==0.40000
Z(i) = z(i);
H(i) = h(i);
elseif d(i)==0.20000
Z(i) = z(i);
H(i) = h(i);
elseif d(i)==0.10000
Z(i) = z(i);
H(i) = h(i);
end
end
H=find(H); Z=find(Z);
Daniel
Daniel le 9 Sep 2016
and result i get is all i positions in vector d which is == to 1.00, 0.80 and so on. But what i need is to use those i`s and save the values in z(i) in a new vector Z
mbonus
mbonus le 12 Sep 2016
Could post an example of what you get and what it should look like?

Connectez-vous pour commenter.

Thorsten
Thorsten le 9 Sep 2016
I found it a bit hard to understand what your are looking for. As far as I understood, this can solve your problem:
p = [1.00, 0.80, 0.60, 0.40, 0.20, 0.10];
for i = 1:numel(p) % for all values in p
Z{i} = z(h == p(i)); % find all positions in h that equal p(i), and assign the corresponding positions in z to a new variable Z
end

2 commentaires

Daniel
Daniel le 9 Sep 2016
For exampel: I have d=[1 22 31 41 51 6 7 8 9 10]; z=[1 2 3 4 5 6 7 8 9 10];
Now, i want to search in d for a value of 41. Then, give me that position, which in this case is on fourth column, hence i = 4
Now, go into the z vector and find me the value of column 4 and take that value and place it into Z vector :)
Thorsten
Thorsten le 9 Sep 2016
Modifié(e) : Thorsten le 9 Sep 2016
Z = z(d==41)
In my code above d == h and p(i) == 41. Because there can be, depending on your data, in principle one, two, or even more matches for d== 41, you have to store one, or two, etc values in Z, i.e., a different number of values for each i. That's why I use Z{i}. If you can guarantee that there is always one and only one match for each i, you can use Z(i).

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Tags

Question posée :

le 8 Sep 2016

Commenté :

le 12 Sep 2016

Community Treasure Hunt

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

Start Hunting!

Translated by