比较两个信号的频率成分

您所在的位置:网站首页 simulink怎么看信号频谱 比较两个信号的频率成分

比较两个信号的频率成分

2023-10-27 04:03| 来源: 网络整理| 查看: 265

比较两个信号的频率成分打开实时脚本

频谱相干性有助于识别频域中信号之间的相似性。大数值表示信号共有的频率分量。

将两个声音信号加载到工作区中。以 1 kHz 的频率对其进行采样。使用 periodogram 计算其功率频谱,并以彼此相邻的方式对其绘图。

load relatedsig Fs = FsSig; [P1,f1] = periodogram(sig1,[],[],Fs,'power'); [P2,f2] = periodogram(sig2,[],[],Fs,'power'); subplot(2,1,1) plot(f1,P1,'k') grid ylabel('P_1') title('Power Spectrum') subplot(2,1,2) plot(f2,P2,'r') grid ylabel('P_2') xlabel('Frequency (Hz)')

每个信号有三个具有显著能量的频率分量。其中有两个分量似乎是共享分量。使用 findpeaks 求出对应的频率。

[pk1,lc1] = findpeaks(P1,'SortStr','descend','NPeaks',3); P1peakFreqs = f1(lc1)P1peakFreqs = 3×1 165.0391 35.1562 94.7266 [pk2,lc2] = findpeaks(P2,'SortStr','descend','NPeaks',3); P2peakFreqs = f2(lc2)P2peakFreqs = 3×1 165.0391 35.1562 134.7656

公共分量位于大约 165 和 35 Hz 处。您可以使用 mscohere 直接求出匹配的频率。对相干性估计绘图。找到阈值 0.75 以上的波峰。

[Cxy,f] = mscohere(sig1,sig2,[],[],[],Fs); thresh = 0.75; [pks,locs] = findpeaks(Cxy,'MinPeakHeight',thresh); MatchingFreqs = f(locs)MatchingFreqs = 2×1 35.1562 164.0625 figure plot(f,Cxy) ax = gca; grid xlabel('Frequency (Hz)') title('Coherence Estimate') ax.XTick = MatchingFreqs; ax.YTick = thresh; axis([0 200 0 1])

您得到的值和以前一样。您可以找到两个信号共有的频率成分,而无需分别研究这两个信号。

另请参阅

findpeaks | mscohere | periodogram

相关主题频域分析实践介绍


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3