I am trying to obtain a series of vectors made of elements from a larger vector given they exceed a threshold
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (2)
Matthew Eicholtz
il 5 Apr 2016
Modificato: Matthew Eicholtz
il 5 Apr 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 Commenti
Matthew Eicholtz
il 5 Apr 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
il 5 Apr 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 Commenti
Vedere anche
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!