数字信号处理中的各种频率
2017-04-02 本文已影响2685人
constant007
在学习数字信号处理时,很多种频率很容易搞混淆,有模拟/数字/频率/角频率等等,也不是特别清楚不同频率之间的关系,希望这篇文件可以为各种频率来个了结.
4种频率及其数量关系
实际物理频率表示物理信号的真实频率; fs为采样频率,表示ADC采集物理信号的频率,由奈奎斯特采样定理可以知道,fs必须≥信号最高频率的2倍才不会发生信号混叠,因此fs能采样到的信号最高频率为fs/2。
角频率Ω是物理频率的2π倍, 这个也称模拟频率。
归一化频率是将物理频率按fs归一化之后的结果,最高的信号频率为fs/2对应归一化频率0.5(ω=π),这也就是为什么在matlab的fdatool工具中归一化频率为什么最大只到0.5的原因。归一化频率中不含fs的信息.
圆周频率是归一化频率的2*pi倍,这个也称数字频率ω。
举个例子:
我们设定fs=30.72MHz
,使用3个cw信号的合成信号代表一个BW=8MHz
的宽带信号,使用实际频率来表示信号,看到BW没有变化,使用数字频率w来表示信号,信号的BW似乎被压缩了.
Q: 为什么要在归一化频率下来分析信号?
image.png 归一化频率clear all;
close all;
fs = 30.72e6;
ts = 1/fs;
nFFT=4096;
%nFFT=32768;
t=0:ts:(nFFT-1)*ts;
d0=100*sin(2*pi*10e6*t);
d1=50*cos(2*pi*5e6*t);
d2=10*cos(2*pi*2e6*t);
dSum=d0+d1+d2;
dFFT = abs(fftshift(fft(dSum,nFFT)))/(nFFT/2);
%dFFT = abs(fft(dSum,nFFT))/(nFFT/2);
fAxis = (-1/2*nFFT:(1/2*nFFT-1))/nFFT*fs;
figure(1)
subplot(2,1,1)
plot(fAxis,dFFT)
title('original signal')
subplot(2,1,2)
dSumI= zeros(1,2*nFFT);
for k =1:nFFT
dSumI(2*k) = dSum(k);
end
dFFTI = abs(fftshift(fft(dSumI,2*nFFT)))/(nFFT);
fAxisI = (-nFFT:(nFFT-1))/(2*nFFT)*fs*2; %fs double
plot(fAxisI,dFFTI)
title('interpolated signal')
figure(2)
subplot(2,1,1)
wAxis = 2*pi*(-1/2*nFFT:(1/2*nFFT-1))/(nFFT);
plot(wAxis,dFFT)
set(gca,'XTick',-2*pi:pi/2:2*pi)
title('original signal normalize')
subplot(2,1,2)
wAxisI = 2*pi*(-nFFT:(nFFT-1))/(2*nFFT);
plot(wAxisI,dFFTI)
set(gca,'XTick',-2*pi:pi/2:2*pi)
title('interpolated signal normalize')