作业帮 > 综合 > 作业

如何提高功率谱的分析范围

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/02 16:12:19
如何提高功率谱的分析范围
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位置处的幅度,
我尝试了提高采样频率,虽然坐标轴发生了变化,但是似乎衰减没有什么变化:




你首先应该明白,在纵坐标采用线性坐标的情况下,单一频率正弦(余弦)信号的理想功率谱谱是与信号频率一致的一条直线,其余频率成分幅值是零,因此在纵坐标采用对数坐标时是无法表示的(0与负数无对数).你得到的曲线是因为运算中的频率泄露所致,其运算规律决定了当采样率不同横坐标频率范围随之不同时,功率谱的形状几乎是一样的.
再问: 是这样的,我实际上要分析的是QPSK调制以后基带信号的功率谱,这个本身是无限长的,我只是为了简单说明,举了一个正弦函数的例子,期待你的答复
再答: 按常规FFT分析方法,给定了频率分辨率和采样点数,也就决定了分析的频率上限。换句话说,在频率分辨率不变的条件下,想提高分析频率上限,就要增大采样点数,比如将1024点增加到2048点。如果只想分析给定频率分辨率下从某一频率到另一频率一个频段范围的频谱结构,可以通过频率细化技术实现,这需要做一定的运算处理后做重采样,然后再做FFT。详细技术难以简单做解释,可以搜索有关频率细化的技术文章读读。
再问: 非常感谢你的回复,我试了一下增大采样点数的方法,就可以实现,具体的做法是: 对于每个样点,在其后面补3个0,形成过采样的信号,然后对这个信号做fft进行分析。好像就能实现了,不知道我做的对不对?
再答: 补零的做法通常是补在实际采样段的开始之前或结束之后,但这是假的提高频率分析上限的细化方法,增加实际采样点数才是真细化。试想你实际采一个点补零15个点甚至更多的情况,你就清楚这并不能得到反映实际过程的结果了。你的补零方法是一种假的提高分辨率的方法。