Remove number from a matrix within a for loop
显示 更早的评论
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 个评论
Walter Roberson
2020-9-18
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
2020-9-19
Walter Roberson
2020-9-19
Have you considered findpeaks of the negative of the data ?
Elijah L
2020-9-19
回答(1 个)
Gaurav Garg
2020-9-21
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
类别
在 帮助中心 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
