Remove number from a matrix within a for loop
Afficher commentaires plus anciens
This script outputs an 1x3 matrix (timeszmn2). I want to make it so that this script removes the 3rd number in this matrix within the 'for' loop. How can I do this?
I would assume that I need to make it so that zmndynarray2 doesn't have this third value?
zmn2 = zpoint';
d =[diff(zmn2) 0];
zmndynarray2 = [];
for i=1:(length(d)-1)
if d(i)*d(i+1)< 0 && d(i+1) > 0
zmndynarray2 = [zmndynarray2 (i+1)];
end
end
zmn2 = zpoint(zmndynarray2)
timeszmn2 = times(zmndynarray2)
4 commentaires
Walter Roberson
le 18 Sep 2020
It is not obvious to me that the output would be a vector of length 3?
It looks to me as if you could probably get the locations using strfind() . strfind() is only documented for character matches, but it is not restricted to character matches. For example,
s = sign(d);
strfind(d(1:end-1) < 0 & d(2:end) > 0)
or you could test more directly on zmn2(1:end-1) in relationship to zmn2(2:end)
Also kind of looks like you are trying to do a findpeaks() kind of operation.
Elijah L
le 19 Sep 2020
Walter Roberson
le 19 Sep 2020
Have you considered findpeaks of the negative of the data ?
Elijah L
le 19 Sep 2020
Réponses (1)
Gaurav Garg
le 21 Sep 2020
Hey Elijah,
You can replace the third element by [ ] in the script.
Example -
a = [1 2 3];
a(3)
a(3) = [ ]
What you would get is -
ans =
1 2
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
