I am trying to obtain a series of vectors made of elements from a larger vector given they exceed a threshold
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have Z=[6 7 8 5 6 7 8 3 2 4]' vector
for i=1:10; A(i) =Z(Z>Z(i)); end
For some reason its not working
0 commentaires
Réponses (2)
Matthew Eicholtz
le 5 Avr 2016
Modifié(e) : Matthew Eicholtz
le 5 Avr 2016
The reason your code does not currently work is because you are trying to assign a vector ( Z(Z>Z(i)) ) to a scalar element in a numeric array ( A(i) ). Since the size of your vector may vary on each iteration, I suggest using a cell array.
To do this, just change A(i) to A{i}.
3 commentaires
Matthew Eicholtz
le 5 Avr 2016
An alternative approach if you do not want to use a cell array is to create a logical mask as follows:
Z = [6 7 8 5 6 7 8 3 2 4]';
mask = bsxfun(@gt,Z,Z');
Then, if you want to get the elements that are greater than the 4th element, for example, use:
Z(mask(:,4))
Roger Stafford
le 5 Avr 2016
It's not clear whether you want those Z elements which exceed some fixed value or those which make up a monotone increasing sequence.
For a fixed value L:
A = Z(Z>L);
For selecting only those Z which constitute a monotone increasing sequence:
t(1) = true;
for k = 2:length(Z)
t(k) = (max(Z(1:k-1))<Z(k));
end
A = Z(t);
0 commentaires
Voir également
Catégories
En savoir plus sur Multidimensional Arrays 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!