matlab求单边功率谱

本文介绍了两种在MATLAB中求取单边功率谱的方法:通过信号频谱平方平均和使用Welch法。虽然理论上Welch法与直接平方平均应得到相同结果,但在实践中遇到困难,即如何选择合适的窗函数以匹配直接平方平均的结果。作者期待有经验的大佬提供指导。
摘要由CSDN通过智能技术生成

求功率谱有好几种方法,本文例两种,一种是先求信号频谱,然后取平方后平均;第二种是用welch法(可指定各种窗)。

rng default;
fs = 1000;   % 采样率
t = 0:1/fs:1-1/fs;
% x = cos(2*pi*50*t)+ randn(size(t));
x = cos(2*pi*50*t);
nfft = length(x);  %指定傅里叶变换的点数(点数越大频率分辨率越高)

figure(1);  %画单边频谱图
sig_dft = abs(fft(x, nfft));
sig_dft(2:end-1) = 2*sig_dft(2:end-1);  %因为只显示单边谱,所以需要把数值*2,折起来
sig_amp = mapminmax(sig_dft/nfft);  %归一化
x1 = (0:nfft-1)*fs/nfft; 
plot(x1(1:250),sig_amp(1:250));  
xlabel('Frequency(Hz)');
ylabel('Amplitude');
title('Single sided Amplitude Spectrum');

figure(2);  %常规方法画单边功率谱
xdft = fft(x);
xdft = xdft(1:nfft/2+1);
psdx = (1/(fs*nfft)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:fs/nfft:fs/2;
semilogy(freq,psdx);  %semilogy以对数方式绘制纵轴

figure(3);  %修正周期图功率谱密度估计方法
[p,f]=pwelch(x, hanning(nfft), nfft/2, nfft, fs);  %指定不同的窗会影响功率谱结果
semilogy(f,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值