如何提高功率谱的分析范围matlab的帮助手册里有一个简单的计算功率谱的程序:rng default;Fs = 1000;t = linspace(0,1,1000);x = cos(2*pi*100*t);N = length(x);xdft = fft(x);% 实信号的功率谱是对称的,只用取一半

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 18:48:57
如何提高功率谱的分析范围matlab的帮助手册里有一个简单的计算功率谱的程序:rng default;Fs = 1000;t = linspace(0,1,1000);x = cos(2*pi*100*t);N = length(x);xdft = fft(x);% 实信号的功率谱是对称的,只用取一半

如何提高功率谱的分析范围matlab的帮助手册里有一个简单的计算功率谱的程序:rng default;Fs = 1000;t = linspace(0,1,1000);x = cos(2*pi*100*t);N = length(x);xdft = fft(x);% 实信号的功率谱是对称的,只用取一半
如何提高功率谱的分析范围
matlab的帮助手册里有一个简单的计算功率谱的程序:
rng default;
Fs = 1000;
t = linspace(0,1,1000);
x = cos(2*pi*100*t);


N = length(x);
xdft = fft(x);
% 实信号的功率谱是对称的,只用取一半即可
xdft = xdft(1:N/2+1);
% 注意使用采样频率和fft点数归一化
psdx = (1/(Fs*N)).*abs(xdft).^2;
% 为了使得总功率不变,要乘以2.0频和乃奎斯特频率不变
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:Fs/length(x):Fs/2;
figure;
plot(freq,10*log10(psdx)); grid on;
title('Periodogram Using FFT');
xlabel('Frequency (Hz)'); ylabel('Power/Frequency (dB/Hz)');
我对其中增加随机噪声的部分做了修改,程序的结果也没有问题,正确显示了该信号从0~500Hz的频率分布,我想让程序也能够计算出600Hz位置处的幅度,
我尝试了提高采样频率,虽然坐标轴发生了变化,但是似乎衰减没有什么变化:




如何提高功率谱的分析范围matlab的帮助手册里有一个简单的计算功率谱的程序:rng default;Fs = 1000;t = linspace(0,1,1000);x = cos(2*pi*100*t);N = length(x);xdft = fft(x);% 实信号的功率谱是对称的,只用取一半
你首先应该明白,在纵坐标采用线性坐标的情况下,单一频率正弦(余弦)信号的理想功率谱谱是与信号频率一致的一条直线,其余频率成分幅值是零,因此在纵坐标采用对数坐标时是无法表示的(0与负数无对数).你得到的曲线是因为运算中的频率泄露所致,其运算规律决定了当采样率不同横坐标频率范围随之不同时,功率谱的形状几乎是一样的.