MATLAB:提取与最大y值匹配的x坐标

MATLAB:提取与最大y值匹配的x坐标,matlab,csv,plot,coordinates,figure,Matlab,Csv,Plot,Coordinates,Figure,使用matlab从csv文件中提取值,对部分数据进行fft变换,然后进行绘图。在看图时,我看到了一个清晰的峰值(见附图),我想写一些东西来提取峰值的x坐标 这是我写的代码的一部分 filename=input('Enter name of a csv file, extension included : ', 's'); csv_file=load(filename); %file_rows rows = size(csv_file, 1); for i = 1:rows-256

使用matlab从csv文件中提取值,对部分数据进行fft变换,然后进行绘图。在看图时,我看到了一个清晰的峰值(见附图),我想写一些东西来提取峰值的x坐标

这是我写的代码的一部分

   filename=input('Enter name of a csv file, extension included : ', 's');
csv_file=load(filename);

%file_rows
rows = size(csv_file, 1);

for i = 1:rows-256   %frames
rh_x= csv_file(i:i+255,60); % coordinates of joint 1
rh_y= csv_file(i:i+255,61);

rh_x2 = csv_file(i:i+255, 12); % coordinates of joint 2
rh_y2 = csv_file(i:i+255, 13);

coord = [rh_x, rh_y; rh_x2, rh_y2];

distarray = sqrt( (rh_x + rh_x2).^2 + (rh_y + rh_y2).^2 ); %distance formula
meandist = mean(distarray);

new_arr = distarray - meandist;  %subtract mean

transf_new = fft(new_arr);  %FFT transform
magn_new = abs(transf_new);  %magnitude_output


plot(magn_new(1:size(magn_new,1)/2), '-');  %****I INCLUDED EVERYTHING BUT THIS IS THE PART THAT PLOTS WHAT I WANT TO EXTRACT FROM

 if i==1
        hold on
 end
end
代码给出了我需要的所有正确的值,我现在想提取这个图中非常明显的峰值的x值(这个图是使用我的一个CSV文件生成的)如何编写存储/显示我生成的峰值x坐标的内容?


谢谢。

使用
max的两种输出语法:

[Y,I]=max(X)
返回向量I中最大值的索引。 如果第一个非单例维度上的值包含更多 如果超过一个最大元素,则返回第一个元素的索引

因此,对于给定的数组
magnu new(1:size(magnu new,1)/2)

maxval
随后将包含最大的
y
值,
imax
将包含相应的索引(在您的情况下,它恰好是
x
坐标,因为您隐式绘制的是
1:size(magnu new,1)/2


由于您正在逐批生成数据,因此您可以为每个批存储每个
imax
maxval
,或者每次只需检查新的
maxval
是否大于先前最大的
maxval
,如果是,则如果您只需要最大poi的x位置,则覆盖
imax
nt使用
[val ind]=max(数据)
[maxval, imax] = max(magn_new(1:size(magn_new,1)/2));