MATLAB:提取与最大y值匹配的x坐标
使用matlab从csv文件中提取值,对部分数据进行fft变换,然后进行绘图。在看图时,我看到了一个清晰的峰值(见附图),我想写一些东西来提取峰值的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
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));