首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到最高峰值的x&y坐标并将数据存储到变量中

问如何找到最高峰值的x&y坐标并将数据存储到变量中
EN

Stack Overflow用户
提问于 2018-06-13 14:00:00
回答 1查看 56关注 0票数 0

首先,我很抱歉,如果这似乎是一个非常基本的问题,但我刚刚开始学习Matlab,我遇到了一个问题,我似乎无法找到解决方案的在线。

我做了一个信号的fft,并绘制了幅值与频率的关系图。我还使用了Savitsky Golay过滤器来平滑情节,这样就更容易了。

我的问题是,我想找到最大峰值的X和Y坐标,并将数据存储在一个变量中。峰值的位置如图所示。我试图找到一种使用findpeaks()函数来实现它的方法,但没有成功。不过我可能用错了。

fft图像

我还添加了到目前为止所能做的事情的代码。

代码语言:javascript
复制
num = xlsread('C:\UTwente\Q4\Structural Health and Condition monitoring\Case Roadbridge (Zwartewaterbrug)\00001 Cars 03-23-17 09.29.07 AM.xlsx','Measurement data');

sig = num(:,16);
sig = sig - mean(sig);                                      % Remove d-c Offset
L = length(sig);
Fs = 1000;                                                  % Sampling Frequency
Fn = Fs/2;                                                  % Nyquist Frequency
FTsig = fft(sig)/L;
Fv = linspace(0, 1, fix(length(FTsig)/2)+1)*Fn;             % Frequency Vector
Iv = 1:length(Fv);                                          % Index Vector
FTsiga = double(abs(FTsig(Iv))*2);                          % Truncate, Magnitude, Convert To Double
sgf_sm = sgolayfilt(FTsiga, 5, 501);                        % Create ‘sgolayfilt’ Filtered FFT
figure(1)
plot(Fv, FTsiga)
hold on
plot(Fv, sgf_sm, '-r', 'LineWidth',2)
hold off
grid
xlabel('Frequency')
ylabel('Amplitude')
legend('Original Spectrum', 'Smoothed & Filtered Spectrum')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-14 10:39:21

我相信你在找findpeaks()函数。它用于查找局部最大值,但您可以通过更改其参数来找到绝对最大值:

代码语言:javascript
复制
[peaks, locations] = findpeaks(Y,X,'NPeaks',1,'sortstr','descend');

这里的Y,和X是你的FTsiga和Fv数组。‘NPeaks’显示了你想要的本地峰值的多少,而'sortstr‘显示了你想要对它们排序的方式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50839151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档