功率谱密度函数的偏移量

9的观点(30天)
Lorcan康伦
Lorcan康伦 2020年10月14日
评论道: 马修•诺伊 2020年10月14日
我想计算2的功率谱密度函数。他们的大小相似的波动从他们的意思,但有一个大的偏移量。这让我相信函数与大型抵消上面应该有一个功率谱密度函数没有一个偏移量。然而这并不是我所看到的,我希望有人可以给我解释一下。我附加代码,接近信号,然后使用几种不同的方法计算功率谱密度。方法1和2显示的功率谱密度和周期图的两个functinos类似的数量级,与我期望的相反。方法3然后试图用自相关函数来计算功率谱,但这并不管用。最后如果我使用matlab建立功率谱函数我看到类似我期望什么,一个偏移量的函数有一个更高的功率谱。
谁能向我解释如何协调这四种方法计算功率谱吗?我相信他们都应该返回相同的。我也想知道为什么前两个方法产生相似的两个函数的功率谱,当一个人显然有更多的权力,由于偏移量。
最后是有物理意义的如果我将时间序列fft广场的?
清晰的所有
关闭所有
n = 100000;
达峰时间= 1 e5;
t = linspace(0,达峰时间,n);
dt =意味着(diff (t));
fs = 1 / dt;
S1 = 1 e-5 + 5 e-8 * sin(2 *π* 100 * t) + randn (1, n) * 1 e-8;
S2 = randn (1, n) * 1 e-8;
%
%的阴谋(S1)
%
图(2)%
%的阴谋(S2)
%返回
freqvec = linspace (0, fs, n / 2);
% fft
ftS1 = fft (S1);
ftS1 = ftS1。*连词(ftS1)。* (1 / (fs * n));
ftS2 = fft (S2);
ftS2 = ftS2。*连词(ftS2)。* (1 / (fs * n));
图(1)
重对数(freqvec、abs (ftS1(1:结束/ 2)))
持有
重对数(freqvec、abs (ftS2(1:结束/ 2)))
% periodgram
[p阵线]=周期图(S1,[],长度(S1), fs);
[p2, fv2] =周期图(S2,[],长度(S2), fs);
图(2)
重对数阵线,√(p))
持有
重对数(fv2 sqrt (p2))
%自相关
AC1 = autocorr (S1,“NumLags”、长度(S1) 2);
AC2 = autocorr (S2,“NumLags”、长度(S2) 2);
ft1 = fft (AC1);
ft2 = fft (AC2);
图(3)
频率= linspace (0, fs, n / 2);
重对数(频率、abs (ft1 (1: n / 2)))
持有
重对数(频率、abs (ft2 (1: n / 2)))
%功率谱密度
freqsamp =意味着(diff(频率));
spec1 = pspectrum (S1, freqsamp);
spec2 = pspectrum (S2, freqsamp);
图(4)
重对数(spec1)
持有
重对数(spec2)

答案(1)

马修•诺伊
马修•诺伊 2020年10月14日
我修改你的代码。有几个bug ....但通知你一个偏移量只是一个直流值,所以在FFT (psd)光谱只有afect直流频率,而不是更高的垃圾箱(相关信号的动态内容)
这是验证的代码。不同的情节只是直流频率。
我评论道“autocorr”方法部分没有完全相同版本的matlab。
我认为3人计算是足够的演示
愿一切都好!
n = 1 e6;%样本
fs = 1000;%抽样频率(赫兹)
signal-freq = 100;%确定fs > 2.56 *信号频率
t = (0: n - 1) / fs;
dt = 1 / f;
达峰时间= max (t);
S2 = randn (1, n) * 1 e-8;
S1 = 1 e-5 + 5 e-8 * sin(2 *π* 100 * t) + S2;%所以S1是基于S2 +其他
%
%的阴谋(S1)
%
图(2)%
%的阴谋(S2)
%返回
freqvec = linspace (0 f / 2 n / 2);
% fft
ftS1 = fft (S1);
ftS1 = ftS1。*连词(ftS1)。* (1 / (fs * n));
ftS2 = fft (S2);
ftS2 = ftS2。*连词(ftS2)。* (1 / (fs * n));
图(1)
%重对数(freqvec、abs (ftS1(1:结束/ 2)))
%抓住
%重对数(freqvec、abs (ftS2(1:结束/ 2)))
semilogy (freqvec、abs (ftS1(1:结束/ 2)),“b”、freqvec abs (ftS2(1:结束/ 2)),“r”)
传奇(“S1 ',“S2”);
% periodgram
[p阵线]=周期图(S1,[],长度(S1), fs);
[p2, fv2] =周期图(S2,[],长度(S2), fs);
图(2)
%重对数阵线,√(p))
%抓住
%重对数(fv2 sqrt (p2))
semilogy阵线,√(p),“b”fv2, sqrt (p2),“r”)
传奇(“S1 ',“S2”);
% %自相关
% AC1 = autocorr (S1, NumLags,长度(S1) 2);
% AC2 = autocorr (S2, NumLags,长度(S2) 2);
% ft1 = fft (AC1);
% ft2 = fft (AC2);
图(3)%
%频率= linspace (0, fs, n / 2);
%重对数(频率、abs (ft1 (1: n / 2)))
%抓住
%重对数(频率、abs (ft2 (1: n / 2)))
%
%功率谱密度
%频率= linspace (0, fs, n / 2);
% freqsamp =意味着(diff(频率));
% spec1 = pspectrum (S1, freqsamp);
% spec2 = pspectrum (S2, freqsamp);
nfft = 640;
% (Pxx F) = PWELCH (X,窗口、NOVERLAP NFFT, Fs)返回一个PSD作为计算
%的函数物理频率(赫兹)。Fs是采样频率
%中指定赫兹。
[spec1 f] = pwelch (S1,汉宁(nfft), 0.75 * nfft nfft, fs);
[spec2 f] = pwelch (S2,汉宁(nfft), 0.75 * nfft nfft, fs);
图(4)
spec1 semilogy (f,“b”f spec2“r”)
传奇(“S1 ',“S2”);
2的评论
马修•诺伊
马修•诺伊 2020年10月14日
首先,我没有得到相同的情节
,不,你不能猜到dfference psd上可以从情节(恕我直言)
当我有疑问,我做的时间/频率分析比较两个信号。这样你可以很容易地看到,时间跨度/频率范围可能会有差异。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!