数字频率与模拟频率的关系与特点
link1、link2、link3
模拟频率、数字角频率和DFT频率分辨率
数字频率与模拟频率的定义
模拟频率f:每秒经历多少个周期,单位为Hz;
模拟角频率Ω:每秒经历多少弧度,单位为rad/s;
数字角频率ω:采样点之间的弧度,单位为rad。
数字信号是由模拟信号采样而来,采样频率不一样,采样点的时间就不一样。因此用每秒经历多少个周期已无多大意义,所以。
⎩⎪⎨⎪⎧f→s−1Ω=2πf→rad/sω=Ω/fs=ΩTs→radω=Ω/fs=2πf/fs(1−1)
对于上式(1-1)的解释:
- 数字角频率ω是模拟角频率Ω对采样频率fs的归一化;
- f/fs是一个无量纲的数,2π代表着弧度;
- 即此频率(数字角频率:rad)非彼频率(模拟角频率:rad/s)。
数字角频率与采样频率有关:
(...,−2π,−π,0,π,2π,...)(...,fs,−0.5fs,0,0.5fs,fs,...)
为什么模拟角频率和数字角频率不一样
一个单位是rad/s,另一个是rad,肯定就不一样了啊。
模拟角频率Ω⊂(−∞,+∞),而数字角频率ω⊂(−π,π),当然也可以是(0,2π)。但由于数字角频率是具有周期性的,所以也可以认为数字角频率ω⊂(−∞,+∞),只不过是周期性的。
设fs=1Hz,当Ω=π/8和Ω=17π/8时,抽样序列如下:可以看到虽然模拟角频率增加了2π,但是由于采样点数和采样值都相同,所以实际的离散序列也是一样的。这也体现出了离散序列的角频率是以2π为周期的。
MATLAB代码如下:
step = 64; % 用于产生模拟信号的精度
t = 0:1/(2*step):20;
t = t';
w1 = pi / 8;
x1 = cos(w1 .* t);
w2 = pi * 17 / 8;
x2 = cos(w2 .* t);
fs = 1;
ts = 0:1/fs:20;
ts = ts';
% 下面的作用是查找ts元素离t中最近元素的索引
D = abs(bsxfun(@minus, ts.', t));
M = min(D, [], 1);
[Index, ~] = find(bsxfun(@eq, M, D));
x1n = x1(Index); % x1的抽样序列
x2n = x2(Index); % x2的抽样序列
subplot(211); plot(t, x1, 'b');
hold on; stem(ts, x1n, 'r');
title('$$\Omega=\frac{\pi}{8}$$', 'Interpreter', 'latex');
subplot(212); plot(t, x2, 'b');
hold on; stem(ts, x2n, 'r');
title('$$\Omega=\frac{17\pi}{8}$$', 'Interpreter', 'latex');
xlabel(['fs=', num2str(fs), 'Hz']);
时域离散信号和时域离散系统
信号、系统
时域离散信号
常用的典型序列
MATLAB产生各种典型序列
序列的运算
加、减、乘、除、反转等。
时域离散系统
线性系统
当系统T的输入为x1(n)时,输出是y1(n);输入为x2(n)时,输出是y2(n)。若满足线性,则输入为x1(n)+x2(n)时,输出应为y1(n)+y2(n);且输入为ax1(n)时,输出是ay1(n)。
if{y1(n)=T[x1(n)]y2(n)=T[x2(n)]have{T[x1(n)+x2(n)]=y1(n)+y2(n)T[ax1(n)]=ay1(n)
时不变系统
ify(n)=T[x(n)]havey(n−n0)=T[x(n−n0)]
线性时不变系统及其输入与输出之间的关系
系统单位冲激响应:h(n)=T[δ(n)]输入信号:x(n)=m=−∞∑+∞x(m)δ(n−m)则输出为:y(n)=T[m=−∞∑+∞x(m)δ(n−m)]=m=−∞∑+∞x(m)[δ(n−m)]根据时不变性质有:y(n)=m=−∞∑+∞x(m)h(n−m)=x(n)∗h(n)
系统的因果性和稳定性
系统当前的输出只与之前的输入有关,后之后的输入无关。
h(n)=0n<0
时域离散系统的输入输出描述法—线性常系数差分方程
线性常系数差分方程
y(n)=i=0∑Mbix(n−i)−i=1∑Naiy(n−i)ori=0∑Naiy(n−i)=i=0∑Mbix(n−i)a0=1
差分方程的阶数是用方程y(n−i)项中i的最大取值与最小取值之差确定的,即上式是N阶线性常系数差分方程。
线性常系数差分方程的求解
- 经典解法:齐次解、特解
- 递推解法
- 交换域方法:将差分方程变换到z域
- 还可以由差分方程求出系统的单位脉冲响应,然后与已知的输入序列进行卷积运算。
模拟信号数字处理方法
采样定理及A/D变换
xa(t)是模拟信号、pδ(t)是单位冲激序列、xa^(t)是经理想采样后的信号。
pδ(t)=n=−∞∑+∞δ(t−nT)xa^(t)=xa(t)pδ(t)⎩⎪⎪⎪⎨⎪⎪⎪⎧Xa(jω)=F[xa(t)]Xa^(jω)=F[xa^(t)]Pδ(jω)=F[pδ(t)]
下面推导理想采样信号的频谱与原模拟信号频谱的关系:
Xa^(jΩ)=2π1Xa(jΩ)∗Pδ(jΩ)...Xa^(jΩ)=T1k=−∞∑+∞Xa(jΩ−jkΩs)
上式表明理想采样信号的频谱是原模拟信号频谱沿频率轴,每间隔采样角频率Ωs=2πFS=T2π重复出现一次,并叠加而形成的周期函数。或者说理想采样信号的频谱是原模拟信号的频谱以Ωs为周期,进行周期性延拓而成的。
因此,若要理想采样信号的频谱不重合,则需要满足:Ωs≥wmax或Fs≥fmax,这就是采样定理。
数字序列转换成模拟信号
如果x(n)是在满足抽样定理的条件下得到的,那么可以通过一个低通滤波器不失真地将原模拟信号xa(t)恢复出来,低通滤波器的传输函数如下:
G(jΩ)={T0∣∣Ω∣∣<21Ωs∣∣Ω∣∣ ≥ 21Ωs
其时域表达式为:
g(t)=2π1∫−∞+∞G(jΩ)ejΩtdΩ=2π1∫−Ωs/2+Ωs/2TejΩtdΩ=Ωst/2sin(Ωst/2)∵Ωs=2πFs=2π/T∴g(t)=πt/Tsin(πt)/T
g(t)被称为内插函数。
x(n)=xa(nT)是经xa(t)满足采样定理采样后的离散信号,我们现在知道离散信号,如何恢复出模拟信号呢?转换公式如下(详细推导见DSP书第26页):
xa(t)=n=−∞∑+∞xa(nT)π(t−nT)/Tsin[π(t−nT)]/T
实际中采用D/AC完成数字信号到模拟信号的转换,包括三部分:解码器、零阶保持器和平滑滤波器。框图如下:
由时域离散信号xa(nT)恢复模拟信号的过程是内插过程。
时域离散信号和系统的频域分析
时域离散信号的傅里叶变换的定义及性质
x(t)的傅里叶变换是X(ejω),x(n)的傅里叶变换也是X(ejω),在频域都是连续的。
DTFT的定义
推导:
∵x(n)=x(t)δT(t)=x(t)n=−∞∑∞δ(t−nT)∴X(jω)=F[x(n)]=∫−∞+∞x(t)n=−∞∑∞δ(t−nT)e−jωtdt=n=−∞∑∞∫−∞+∞x(t)δ(t−nT)e−jωtdt=n=−∞∑∞x(nT)e−jωnT∫−∞+∞δ(t−nT)dt=n=−∞∑∞x(nT)e−jωnT
令T=1,则变为:
x(n)=xa(nT)=x(t)∣∣∣t=nT⎩⎪⎨⎪⎧X(ejω)=∑n=−∞+∞x(n)e−jωnx(n)=2π1∫−ππX(ejω)ejωndω
DTFT的性质
-
周期性:X(ejω)=X(ejω+2πM),周期为2π。
-
线性
-
时移和频移:
[x(n−n0)]=e−jωn0X(ejω)[ejΩ0nx(n)]=X(ej(ω−Ω0))
-
对称性:xe(n)为共轭对称序列(其实部是偶函数、虚部是奇函数,即满足xe(n)=xe∗(−n));xo(n)为共轭反对称序列(其实部是奇函数、虚部是偶函数,即满足xo(n)=−xo∗(−n))。
x(n)=xr(n)+jxi(n)X(ejω)=Xe(ejω)+Xo(ejω)x(n)=xe(n)+xo(n)X(ejω)=XR(ejω)+jXI(ejω)
-
频域卷积定理:
若y(n)=h(n)x(n)则有Y(ejω)=2π1H(ejω)∗X(ejω)=2π1∫−ππH(ejθ)X(ejθ)dθ
周期序列的离散傅里叶级数(DFS)
X(k)=DFS[x(n)]=n=0∑N−1x(n)e−jN2πkn(1)x(n)=IDFS[X(k)]=N1k=0∑N−1X(k)ejN2πkn(2)
基波分量的频率为2π/N,幅度是(1/N)X(1),一个周期序列可以用其DFS系数X(k)表示它的频谱分布规律。
周期序列的傅里叶变换表达式(FT)
复指数序列ejω0n的FT
首先推导复指数序列ejω0n的傅里叶变换如下:
X(ejω)=F[ejω0n]=r=−∞∑+∞2πδ(ω−(ω0+2πr))r为整数
上式表明:复指数序列ejω0n的FT是在ω0+2πr处的单位冲激函数,强度为2π。
周期序列的FT
一般周期序列都能表示成不同复指数序列ejωn的叠加,因此再根据线性就可以得出该周期序列的傅里叶变换:
x(n)=a0ejω0n+a1ejω1n+...+amejωmn
或者这样考虑,对一般周期序列x(n)展开成DFS,第k次谐波为(X(k)/N)ejN2πkn,类似于复指数序列的FT,其FT为:
r=−∞∑+∞2πNX(k)δ(ω−(N2πk+2πr))r为整数
上面是第k次谐波的FT,那么整个周期序列的FT为:
X(ejω)=F[x(n)]=k=0∑N−1r=−∞∑+∞2πNX(k)δ(ω−(N2πk+2πr))r为整数
式中,K=0,1,2,...,N−1。如果让k在−∞到+∞区间变换,上式可简化为:
X(ejω)=k=−∞∑∞2πNX(k)δ(ω−N2πk)式中X(k)=n=0∑N−1x(n)e−jN2πkn
对于同一个周期信号,其DTS和FT的模的形状是一样的,不同的是FT用单位冲激函数表示(用带箭头的竖线表示)。因此周期序列的频谱分布用其DFS或者FT表示都可以,但画图时应注意单位冲激函数的画法。
周期序列的FT与周期信号FT的联系
还记得周期信号fT(t)的傅里叶变换(FT(jω))是什么吗?(省略掉推导):
FT(jw)=n=−∞∑∞2πFnδ(ω−nω0)F(ejω)=k=0∑N−1r=−∞∑+∞2πNF(k)δ(ω−(N2πk+2πr))r为整数
上式表明:周期信号的傅里叶变换由无穷多个出现在谐波频率nω0上的冲激函数组成,每一冲激的强度为傅里叶系数Fn乘上2π。
看出来周期序列和周期信号的傅里叶变换有什么关系了吗?其实两者是一样的:
- 都是由不同位置的冲激叠加而成;
- 冲激的强度都是傅氏系数乘上2π(复指数序列的系数为1)。
但也有不同点,就是冲激位置的规律有点不一样:
- 周期信号的冲激在谐波频率nω0上
- 周期序列的冲激在N2πk+2πr,r为整数处,具有周期性为2π。
为什么会出现周期性呢?并且周期为2π,请看数字频率与模拟频率的关系与特点。
时域离散信号的FT与模拟信号FT之间的关系
X(ejΩT)=T1k=−∞∑∞Xa(jΩ−jkΩs)X(ejω)=T1k=−∞∑∞Xa(jTω−2πk)Ωs=2πFs=T2π
上式表明:时域离散信号的频谱也是(前面说的是理想采样信号)模拟信号频谱的周期性延拓,周期为Ωs=2πFs=T2π。
序列的Z变换
Z变换的定义及与序列的FT的关系
X(z)=def=n=−∞∑+∞x(n)z−nn=−∞∑+∞∣∣∣x(n)z−n∣∣∣<∞
Z变换的收敛域一般是一个环带状,即Rx−<∣∣z∣∣<Rx+。如果Z变换的收敛域包括单位圆,那么:
X(ejω)=X(z)∣∣∣z=ejω
即单位圆上的Z变换就是序列的傅里叶变换(前提是在单位圆上收敛)。
Z变换的性质
设X(z)=[x(n)]Rx−<∣∣z∣∣<Rx+,则有如下性质:
-
线性
-
移位性质:
[x(n−n0)]=z−n0X(z)Rx−<∣∣z∣∣<Rx+
-
序列乘以指数序列的性质:
y(n)=anx(n)Y(z)=[anx(n)]=X(a−1Z)∣a∣Rx−<∣∣z∣∣<∣a∣Rx+
-
序列乘以n的ZT
X(z)=[nx(n)]=−zdzdX(z)Rx−<∣∣z∣∣<Rx+
-
复共轭序列的ZT
X(z)=[x∗(n)]=X∗(z∗)Rx−<∣∣z∣∣<Rx+
-
初值定理:x(n)是因果序列,则:
x(0)=z→∞limX(z)
-
终值定理:x(n)是因果序列,其Z变换的极点除可以有一个一阶极点在z=1上,其它极点都在单位圆内,则:
n→∞limx(n)=z→1lim(z−1)X(z)
-
时域卷积定理:W(z)的收敛域就是X(z)和Y(z)的公共收敛域。
W(z)=[x(n)∗y(n)]=X(z)Y(z)Rw−<∣∣z∣∣<Rw+Rw+=min[Rx+,Ry+]Rw−=max[Rx−,Ry−]
-
复卷积定理:不常用
-
帕斯维尔定理:不常用
利用Z变换分析信号和系统的频响特性
频率响应函数与系统函数
设系统初始状态为0,系统对δ(n)的响应h(n)的傅里叶变换H(ejω)称为系统的频率响应函数,即:
H(ejω)=n=−∞∑+∞h(n)e−jωn=∣∣∣H(ejωn)∣∣∣ejϕ(ω){幅频特性:∣∣∣H(ejωn)∣∣∣相频特性:ϕ(ω)
将序列h(n)进行Z变换得到H(z),这就是该系统的系统函数,即:
H(z)=X(z)Y(z)=∑i=0Naiz−i∑i=0Mbiz−i
如果Z变换的收敛域包含单位圆,则:
H(ejω)=H(z)∣∣∣z=ejω
输入序列ejωn的频率响应
y(n)=h(n)∗x(n)=...=H(ejω)ejωn=∣∣∣H(ejωn)∣∣∣ej[ωn+ϕ(ω)]
上式说明:单频复指数序列ejωn通过频率响应函数为H(ejω)的系统后,输出还是单频复指数序列,只不过幅度放大∣∣∣H(ejωn)∣∣∣倍,相移为ϕ(ω)。
利用系统的零极点分布分析系统的频率响应特性
H(z)=A∏r=1N(1−drz−1)∏r=1M(1−crz−1)∣H(ejω)∣=∣A∣∏r=1N∣Pr∣∏r=1M∣zr∣ϕ(ω)=ω(N−M)+r=1∑Nαr−r=1∑Mβr
即:
- 幅频响应等于所有的零点到ω的模长的乘积除以所有的极点到ω的模长的乘积;
- 相频响应等于所有的零点与ω形成的夹角之和减去所有的极点与ω形成的夹角之和。
几种特殊系统的系统函数及特点
全通滤波器
∣H(ejω)∣=10≤ω≤2π
梳妆滤波器
H(zN)=1−az−N1−z−N0<a<1
梳妆滤波器可以滤除输入信号中ω=N2πk, k=0,1,...,N−1的频率分量,可以滤除电网谐波干扰和其它频谱等间隔分布的干扰。当a=1时就变成了全通滤波器,下面给出频率响应和零极点分布的MATLAB代码:
% y(n) -0.9y(n-8) = x(n) - x(n-8);
% H(z) = (1 - z^-8) / (1 - 0.9z^-8)
B = [1 0 0 0 0 0 0 0 -1];
A = [1 0 0 0 0 0 0 0 -0.9];
% impz(B, A, 200);
% [Z, P, K] = tf2zp(B, A)
zplane(B, A);
legend('零点', '极点');
title('$$ H(z) = \frac{1-z^{-8}}{1-0.9z^{-8}}$$', ...
'Interpreter', 'latex');
[H, w] = freqz(B, A, 500, 'whole');
Hm = abs(H);
Hp = angle(H);
subplot(2, 1, 1);
plot(w, Hm), grid on;
xlabel('\omega(rad/s)');
ylabel('Magnitude');
title('幅频特性曲线');
subplot(2, 1, 2);
plot(w, Hp), grid on;
xlabel('\omega(rad/s)');
ylabel('Phase');
title('相频特性曲线');
a=0.2时的频率响应和零极点分布图:
a=0.9时的频率响应和零极点分布图:
离散傅里叶变换(DFT)
对离散时间序列x(n)进行FT得到的结果在频域仍然是连续的,不便于计算机处理。因此目的是对频域也进行离散化,方法有多种,如DFT、DFS。对于DFS,主要步骤就是对x(n)进行周期性延拓,然后计算其傅里叶级数,该结果和DFT的结果是有关联的。
DFT的定义
X(k)=DFT[x(n)]=n=0∑N−1x(n)WNknk=0,1,...,N−1x(n)=IDFT[X(k)]=N1k=0∑N−1X(K)WN−knn=0,1,...,N−1WN=e−jN2π
将WN=e−jN2π带入即得:
X(k)=DFT[x(n)]=n=0∑N−1x(n)e−jN2πknk=0,1,...,N−1x(n)=IDFT[X(k)]=N1k=0∑N−1X(k)ejN2πknn=0,1,...,N−1
和DFS的比较
DFS:⎩⎪⎨⎪⎧X(k)=DFS[x(n)]=∑n=0N−1x(n)e−jN2πkn(1)x(n)=IDFS[X(k)]=N1∑k=0N−1X(k)ejN2πkn(2)DFT:⎩⎪⎨⎪⎧X(k)=DFT[x(n)]=∑n=0N−1x(n)e−jN2πknk=0,1,...,N−1(3)x(n)=IDFT[X(k)]=N1∑k=0N−1X(k)ejN2πknn=0,1,...,N−1(4)
其实没有什么不同,只是对序列的取值有限定,这样的限定有如下结论:
- 如果s(n)是周期序列,周期为N,那么其一个周期s1N(n)的N点DFT就等于其DFS的主值序列。即:
设序列x(n)的长度为M。
X(z)=ZT[x(n)]=n=0∑M−1x(n)z−n(1)X(ejω)=DTFT[x(n)]=n=0∑M−1x(n)e−jωn(2)X(k)=DFT[x(n)]N=n=0∑M−1x(n)WNkn=n=0∑M−1x(n)e−jN2πnkk=0,1,...,N−1(3)
- 序列x(n)的N点DFT-X(k)是x(n)的Z变换在单位圆上的N点等间隔采样;
∵WNk=WNk+mNk,m为整数,N为自然数∴X(k+mN)=...=X(k)
任何周期为N的周期序列x(n)都可以看做长度为N的有限长序列x(n)的周期性延拓序列,而x(n)是x(n)的一个周期,即:
x(n)=m=−∞∑+∞x(n+mN)x(n)=x(n)RN(n)
有限长序列x(n)的N点DFT的结果X(k)恰好是x(n)的周期性延拓序列x((n))N的DFS的结果X(k)的主值序列,即:
X(k)=X(k)RN(k)
因此X(k)实质上就是x(n)的周期延拓序列x((n))N的频谱特性。
DFT的性质
线性
时/频域循环移位定理
时域循环移位定理{y(n)=x((n+m))NRN(n)Y(k)=DFT[y(n)]=WN−kmX(k)频域循环移位定理{Y(k)=X((k+l))NRN(k)y(n)=IDFT[Y(K)]N=WNnlx(n)
循环卷积定理
ifx(n)=x2(n)∗Lx1(n)=[m=0∑N−1x2(m)x1((n−m))N]RN(n)haveX(k)=DFT[x(n)]N=X1(k)X2(k)X1(k)=DFT[x1(n)]X2(k)=DFT[x2(n)]
复共轭序列的DFT及其对称性
x(n)=xep(n)+xop(n)X(k)=XR(k)+jXI(k)XR(k)=DFT[xep(n)]jXI(k)=DFT[xop(n)]
线性卷积和循环卷积的关系
yc(n)=[i=−∞∑∞yl(n+iL)]RL(n)
即循环卷积等于线性卷积以L为周期进行周期延拓后的序列的主值序列,若要求循环卷积和线性卷积相等,则需要周期延拓后无混叠,即L≥N+M−1。
频率域采样
由X(k)恢复出x(n)的条件
如何从x(n)N推导出x(n)呢?下面直接给出结论:
xN(n)=x(n)RN(n)=[i=−∞∑∞x(n+iN)]RN(n)
如果序列x(n)的长度为M,则只有当频域采样点数N≥M时,才有:
xN(n)=IDFT[X(k)]=x(n)
即可由频域采样值X(k)恢复出原序列x(n),否则产生时域混叠现象。
如何由X(k)恢复X(z)和X(ejω)
结论如下,省略推导:
X(z)=k=0∑N−1X(k)N11−WN−kz−11−z−N=k=0∑N−1X(k)ϕk(z)
将z=ejω带入上式得:
X(ejω)=k=0∑N−1X(k)ϕ(ω−N2πk)ϕ(ω)=N1sin(ω/2)sin(ωN/2)e−jω(2N−1)
上式中X(z)表示内插公式,ϕk(z)称为内插函数。
用DFT对信号进行频谱分析
对连续信号进行频谱分析
Xa(kF)=TX(k)=T⋅DFT[x(n)N]k=0,1,...,N−1
上式表明,可以通过对连续信号采样并进行DFT再乘T,近似得到模拟信号频谱的周期延拓函数在第一个周期[0,Fs]上的N点等间隔采样Xa(kF)。
Tp和N可以按照下面两式进行选择:
N>F2fcTp>F1
fc是信号最高频率,F是谱分辨率,Tp是信号持续时间。
对序列进行频谱分析
略
误差分析
混叠现象
采样速率必须满足采样定理,否则会在ω=π(对应模拟频率f=Fs/2)附近发生频谱混叠现象。一般在采样前进行预滤波,滤除高于折叠频率Fs/2的频率成分,以免发生频谱混叠现象。
栅栏效应
N点DFT是在频率区间[0,2π]上对时域离散信号的频谱进行N点等间隔采样,而采样点之间的频谱是看不到的。对有限长序列,可以在原序列尾部补零;对无限长序列,可以增大截取长度及DFT变换区间长度,从而使频域采样间隔变小,增加频域采样点数和采样点位置,使原来漏掉的某些频谱成分被检测出来。
截断效应
实际中遇到的x(n)可能是无限长的,用DFT对其进行频谱分析时,必须将其截短,形成有限长序列y(n)=x(n)w(n),w(n)称为窗函数,长度为N。