MATLAB: How to find a value X of given Y close to 0, where the value X comes at the first place

findminimum

Hi,
I used to solved my previous question to find a value X of given Y close to 0, but there is a value X comes from the very late place, which is not what I need. How can I extract the earlier value of X?
For example,
338.00 339.00 340.00 341.00 342.00 343.00 … 964.00
1.00 -100.00 -100.00 -100.00 -100.00 -100.00 -100.00 … -100.00
2.00 100.00 100.00 100.00 100.00 100.00 100.00 … 100.00
3.00 0.28 0.12 -0.05 -0.21 -0.38 -0.55 … -0.02
4.00 0.28 0.12 -0.05 -0.21 -0.38 -0.55 … -0.02
5.00 8.21 8.24 8.26 8.28 8.30 8.32 … 8.35
6.00 8.21 8.24 8.26 8.28 8.30 8.32 … 8.35
Where the 340.00 is what I need, not the 964.00. How do I write the code to get 342.00?
The current code I am using is:
dr = damp_ratio(1:6 ,:);
[~,ix]=min(abs(dr),[],'all','linear');
[~,speed]=ind2sub(size(dr),ix);
Thanks in advance.
Terence

Best Answer

damp_ratio=[ -100.00 -100.00 -100.00 -100.00 -100.00 -100.00 -100.00
100.00 100.00 100.00 100.00 100.00 100.00 +100
0.28 0.12 -0.05 -0.21 -0.38 -0.55 -0.02
0.28 0.12 -0.05 -0.21 -0.38 -0.55 -0.02
8.21 8.24 8.26 8.28 8.30 8.32 8.35
8.21 8.24 8.26 8.28 8.30 8.32 8.35]
damp_ratio = 6×7
-100.0000 -100.0000 -100.0000 -100.0000 -100.0000 -100.0000 -100.0000 100.0000 100.0000 100.0000 100.0000 100.0000 100.0000 100.0000 0.2800 0.1200 -0.0500 -0.2100 -0.3800 -0.5500 -0.0200 0.2800 0.1200 -0.0500 -0.2100 -0.3800 -0.5500 -0.0200 8.2100 8.2400 8.2600 8.2800 8.3000 8.3200 8.3500 8.2100 8.2400 8.2600 8.2800 8.3000 8.3200 8.3500
dr = diff( sign(damp_ratio(1:6 ,:)),1,2)~=0 ;
[val,ix]=max(dr,[],2);
speed=ix+1;
speed(val==0)=nan
speed = 6×1
NaN NaN 3 3 NaN NaN