文章目录
- 数字频率与模拟频率的关系与特点
- 数字频率与模拟频率的定义
- 为什么模拟角频率和数字角频率不一样
- 时域离散信号和时域离散系统
- 时域离散信号
- 时域离散系统
- 线性系统
- 时不变系统
- 线性时不变系统及其输入与输出之间的关系
- 系统的因果性和稳定性
- 时域离散系统的输入输出描述法—线性常系数差分方程
- 模拟信号数字处理方法
- 时域离散信号和系统的频域分析
- 时域离散信号的傅里叶变换的定义及性质
- 周期序列的离散傅里叶级数及傅里叶变换表达式
- 周期序列的离散傅里叶级数(DFS)
- 周期序列的傅里叶变换表达式(FT)
- 复指数序列ejω0ne^{j{\omega_0}n}ejω0n的FTFTFT
- 周期序列的FTFTFT
- 周期序列的FTFTFT与周期信号FTFTFT的联系
- 时域离散信号的FT与模拟信号FT之间的关系
- 序列的ZZZ变换
- 利用Z变换分析信号和系统的频响特性
- 频率响应函数与系统函数
- 输入序列ejωne^{j{\omega}n}ejωn的频率响应
- 利用系统的零极点分布分析系统的频率响应特性
- 几种特殊系统的系统函数及特点
- 离散傅里叶变换(DFT)
- DFT的定义
- DFT与FT/ZT的关系
- DFT的隐含周期性
- DFT的性质
- 时/频域循环移位定理
- 循环卷积定理
- 复共轭序列的DFT及其对称性
- 线性卷积和循环卷积的关系
- 频率域采样
- 由X(k)X(k)X(k)恢复出x(n)x(n)x(n)的条件
- 如何由X(k)X(k)X(k)恢复X(z)X(z)X(z)和X(ejω)X(e^{j\omega})X(ejω)
- 用DFT对信号进行频谱分析
- 对连续信号进行频谱分析
- 对序列进行频谱分析
- 误差分析
数字频率与模拟频率的关系与特点
link1、link2、link3
数字频率与模拟频率的定义
模拟频率fff:每秒经历多少个周期,单位为HzHzHz;
模拟角频率Ω\OmegaΩ:每秒经历多少弧度,单位为rad/srad/srad/s;
数字角频率ω\omegaω:采样点之间的弧度,单位为radradrad。
数字信号是由模拟信号采样而来,采样频率不一样,采样点的时间就不一样。因此用每秒经历多少个周期已无多大意义,所以。
{f→s−1Ω=2πf→rad/sω=Ω/fs=ΩTs→radω=Ω/fs=2πf/fs(1−1)\begin{cases} f{\to}s^{-1}\\ \Omega=2{\pi}f{\to}rad/s\\ \omega={\Omega}/f_s={\Omega}T_s{\to}rad\\ \end{cases} \\ \omega={\Omega}/f_s=2{\pi}{\color{blue}f/fs}{\qquad}(1-1) ⎩⎪⎨⎪⎧f→s−1Ω=2πf→rad/sω=Ω/fs=ΩTs→radω=Ω/fs=2πf/fs(1−1)
对于上式(1-1)的解释:
- 数字角频率ω\omegaω是模拟角频率Ω\OmegaΩ对采样频率fsf_sfs的归一化;
- f/fsf/f_sf/fs是一个无量纲的数,2π2{\pi}2π代表着弧度;
- 即此频率(数字角频率:radradrad)非彼频率(模拟角频率:rad/srad/srad/s)。
数字角频率与采样频率有关:
(...,−2π,−π,0,π,2π,...)(...,fs,−0.5fs,0,0.5fs,fs,...)(...,-2\pi,-\pi,0,\pi,2\pi,...)\\(...,fs,-0.5fs,0,0.5fs,fs,...) (...,−2π,−π,0,π,2π,...)(...,fs,−0.5fs,0,0.5fs,fs,...)
![](/assets/blank.gif)
为什么模拟角频率和数字角频率不一样
一个单位是rad/s\color{blue}rad/srad/s,另一个是rad\color{blue}radrad,肯定就不一样了啊。
模拟角频率Ω⊂(−∞,+∞)\Omega{\subset}(-\infin,+\infin)Ω⊂(−∞,+∞),而数字角频率ω⊂(−π,π)\omega{\subset}(-\pi,\pi)ω⊂(−π,π),当然也可以是(0,2π)(0,2\pi)(0,2π)。但由于数字角频率是具有周期性的,所以也可以认为数字角频率ω⊂(−∞,+∞)\omega{\subset(-\infin,+\infin)}ω⊂(−∞,+∞),只不过是周期性的。
设fs=1Hzf_s=1Hzfs=1Hz,当Ω=π/8\Omega=\pi/8Ω=π/8和Ω=17π/8\Omega=17\pi/8Ω=17π/8时,抽样序列如下:可以看到虽然模拟角频率增加了2π2\pi2π,但是由于采样点数和采样值都相同,所以实际的离散序列也是一样的。这也体现出了离散序列的角频率是以2π2\pi2π为周期的。
![](/assets/blank.gif)
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)x_1(n)x1(n)时,输出是y1(n)y_1(n)y1(n);输入为x2(n)x_2(n)x2(n)时,输出是y2(n)y_2(n)y2(n)。若满足线性,则输入为x1(n)+x2(n)x_1(n)+x_2(n)x1(n)+x2(n)时,输出应为y1(n)+y2(n)y_1(n)+y_2(n)y1(n)+y2(n);且输入为ax1(n)ax_1(n)ax1(n)时,输出是ay1(n)ay_1(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)if{\quad} \begin{cases} y_1(n)=T\big[x_1(n)\big]\\ y_2(n)=T\big[x_2(n)\big]\\ \end{cases} \\ have{\quad} \begin{cases} T\big[x_1(n)+x_2(n)\big]=y_1(n)+y_2(n)\\ T\big[ax_1(n)\big]=ay_1(n) \end{cases} 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)]if{\quad}y(n)=T\big[x(n)\big]\\ have{\quad}y(n-n_0)=T\big[x(n-n_0)\big] 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)系统单位冲激响应:{\quad}h(n)=T\Big[\delta(n)\Big]\\ 输入信号:x(n)=\sum_{m=-\infin}^{+\infin}x(m)\delta(n-m)\\ 则输出为:y(n)=T\Big[\sum_{m=-\infin}^{+\infin}x(m)\delta(n-m)\Big]\\ =\sum_{m=-\infin}^{+\infin}x(m)\Big[\delta(n-m)\Big]\\ 根据时不变性质有:\\ y(n)=\sum_{m=-\infin}^{+\infin}x(m)h(n-m)=x(n)*h(n) 系统单位冲激响应: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<0h(n)=0{\quad}n<0 h(n)=0n<0
时域离散系统的输入输出描述法—线性常系数差分方程
线性常系数差分方程
y(n)=∑i=0Mbix(n−i)−∑i=1Naiy(n−i)or∑i=0Naiy(n−i)=∑i=0Mbix(n−i)a0=1y(n)=\sum_{i=0}^{M}b_ix(n-i)-\sum_{i=1}^{N}a_iy(n-i)\\ or{\quad}\sum_{i=0}^{N}a_iy(n-i)=\sum_{i=0}^{M}b_ix(n-i){\quad}a_0=1 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)y(n-i)y(n−i)项中iii的最大取值与最小取值之差确定的,即上式是N阶线性常系数差分方程。
线性常系数差分方程的求解
- 经典解法:齐次解、特解
- 递推解法
- 交换域方法:将差分方程变换到zzz域
- 还可以由差分方程求出系统的单位脉冲响应,然后与已知的输入序列进行卷积运算。
模拟信号数字处理方法
采样定理及A/D变换
xa(t)x_a(t)xa(t)是模拟信号、pδ(t)p_{\delta}(t)pδ(t)是单位冲激序列、xa^(t)\hat{x_a}(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)]p_{\delta}(t)=\sum_{n=-\infin}^{+\infin}\delta(t-nT)\\ \hat{x_a}(t)=x_a(t)p_{\delta}(t)\\ \begin{cases} X_a(j\omega)=\mathscr{F}\Big[x_a(t)\Big]\\ \hat{X_a}(j\omega)=\mathscr{F}\Big[\hat{x_a}(t)\Big]\\ P_{\delta}(j\omega)=\mathscr{F}\Big[p_{\delta}(t)\Big]\\ \end{cases} 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Ω)=12πXa(jΩ)∗Pδ(jΩ)...Xa^(jΩ)=1T∑k=−∞+∞Xa(jΩ−jkΩs)\hat{X_a}(j\Omega)=\frac{1}{2\pi}X_a(j\Omega)*P_{\delta}(j\Omega)\\ ...\\ \hat{X_a}(j\Omega)=\frac{1}{T}\sum_{k=-\infin}^{+\infin}X_a(j\Omega-jk\Omega_s) Xa^(jΩ)=2π1Xa(jΩ)∗Pδ(jΩ)...Xa^(jΩ)=T1k=−∞∑+∞Xa(jΩ−jkΩs)
上式表明理想采样信号的频谱是原模拟信号频谱沿频率轴,每间隔采样角频率Ωs=2πFS=2πT\Omega_s=2{\pi}F_S=\frac{2{\pi}}{T}Ωs=2πFS=T2π重复出现一次,并叠加而形成的周期函数。或者说理想采样信号的频谱是原模拟信号的频谱以Ωs\Omega_sΩs为周期,进行周期性延拓而成的。
因此,若要理想采样信号的频谱不重合,则需要满足:Ωs≥wmax\Omega_s{\ge}w_{max}Ωs≥wmax或Fs≥fmaxF_s{\ge}f_{max}Fs≥fmax,这就是采样定理。
数字序列转换成模拟信号
如果x(n)x(n)x(n)是在满足抽样定理的条件下得到的,那么可以通过一个低通滤波器不失真地将原模拟信号xa(t)x_a(t)xa(t)恢复出来,低通滤波器的传输函数如下:
G(jΩ)={T∣Ω∣<12Ωs0∣Ω∣≥12ΩsG(j\Omega)= \begin{cases} T & \big|\Omega\big|<\frac{1}{2}\Omega_s\\ 0 & \big|\Omega\big|\ {\ge}\ \frac{1}{2}\Omega_s\\ \end{cases} G(jΩ)={T0∣∣Ω∣∣<21Ωs∣∣Ω∣∣ ≥ 21Ωs
其时域表达式为:
g(t)=12π∫−∞+∞G(jΩ)ejΩtdΩ=12π∫−Ωs/2+Ωs/2TejΩtdΩ=sin(Ωst/2)Ωst/2∵Ωs=2πFs=2π/T∴g(t)=sin(πt)/Tπt/Tg(t)=\frac{1}{2\pi}\int_{-\infin}^{+\infin}G(j\Omega)e^{j{\Omega}t}d_{\Omega}=\frac{1}{2\pi}\int_{-\Omega_s/2}^{+\Omega_s/2}Te^{j{\Omega}t}d_{\Omega}=\frac{\sin({\Omega_s}t/2)}{{\Omega_s}t/2}\\ {\because}{\qquad}{\Omega_s}=2{\pi}F_s=2{\pi}/T\\ {\therefore}g(t)=\frac{\sin({\pi}t)/T}{{\pi}t/T} 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)g(t)g(t)被称为内插函数。
x(n)=xa(nT)x(n)=x_a(nT)x(n)=xa(nT)是经xa(t)x_a(t)xa(t)满足采样定理采样后的离散信号,我们现在知道离散信号,如何恢复出模拟信号呢?转换公式如下(详细推导见DSP书第26页):
xa(t)=∑n=−∞+∞xa(nT)sin[π(t−nT)]/Tπ(t−nT)/Tx_a(t)=\sum_{n=-\infin}^{+\infin}x_a(nT)\frac{\sin\Big[{\pi}(t-nT)\Big]\Big/T}{{\pi}(t-nT)\Big/T} xa(t)=n=−∞∑+∞xa(nT)π(t−nT)/Tsin[π(t−nT)]/T
实际中采用D/AC完成数字信号到模拟信号的转换,包括三部分:解码器、零阶保持器和平滑滤波器。框图如下:
#mermaid-svg-xV4WoMnX7jSUlIC7 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .label text{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .node rect,#mermaid-svg-xV4WoMnX7jSUlIC7 .node circle,#mermaid-svg-xV4WoMnX7jSUlIC7 .node ellipse,#mermaid-svg-xV4WoMnX7jSUlIC7 .node polygon,#mermaid-svg-xV4WoMnX7jSUlIC7 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-xV4WoMnX7jSUlIC7 .node .label{text-align:center;fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .node.clickable{cursor:pointer}#mermaid-svg-xV4WoMnX7jSUlIC7 .arrowheadPath{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-xV4WoMnX7jSUlIC7 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-xV4WoMnX7jSUlIC7 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-xV4WoMnX7jSUlIC7 .edgeLabel rect{opacity:0.9}#mermaid-svg-xV4WoMnX7jSUlIC7 .edgeLabel span{color:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-xV4WoMnX7jSUlIC7 .cluster text{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-xV4WoMnX7jSUlIC7 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-xV4WoMnX7jSUlIC7 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-xV4WoMnX7jSUlIC7 .actor-line{stroke:grey}#mermaid-svg-xV4WoMnX7jSUlIC7 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .sequenceNumber{fill:#fff}#mermaid-svg-xV4WoMnX7jSUlIC7 #sequencenumber{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .messageText{fill:#333;stroke:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-xV4WoMnX7jSUlIC7 .labelText,#mermaid-svg-xV4WoMnX7jSUlIC7 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-xV4WoMnX7jSUlIC7 .loopText,#mermaid-svg-xV4WoMnX7jSUlIC7 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-xV4WoMnX7jSUlIC7 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-xV4WoMnX7jSUlIC7 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-xV4WoMnX7jSUlIC7 .noteText,#mermaid-svg-xV4WoMnX7jSUlIC7 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-xV4WoMnX7jSUlIC7 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-xV4WoMnX7jSUlIC7 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-xV4WoMnX7jSUlIC7 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-xV4WoMnX7jSUlIC7 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 .section{stroke:none;opacity:0.2}#mermaid-svg-xV4WoMnX7jSUlIC7 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-xV4WoMnX7jSUlIC7 .section2{fill:#fff400}#mermaid-svg-xV4WoMnX7jSUlIC7 .section1,#mermaid-svg-xV4WoMnX7jSUlIC7 .section3{fill:#fff;opacity:0.2}#mermaid-svg-xV4WoMnX7jSUlIC7 .sectionTitle0{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .sectionTitle1{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .sectionTitle2{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .sectionTitle3{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-xV4WoMnX7jSUlIC7 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 .grid path{stroke-width:0}#mermaid-svg-xV4WoMnX7jSUlIC7 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-xV4WoMnX7jSUlIC7 .task{stroke-width:2}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskText:not([font-size]){font-size:11px}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-xV4WoMnX7jSUlIC7 .task.clickable{cursor:pointer}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskText0,#mermaid-svg-xV4WoMnX7jSUlIC7 .taskText1,#mermaid-svg-xV4WoMnX7jSUlIC7 .taskText2,#mermaid-svg-xV4WoMnX7jSUlIC7 .taskText3{fill:#fff}#mermaid-svg-xV4WoMnX7jSUlIC7 .task0,#mermaid-svg-xV4WoMnX7jSUlIC7 .task1,#mermaid-svg-xV4WoMnX7jSUlIC7 .task2,#mermaid-svg-xV4WoMnX7jSUlIC7 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskTextOutside0,#mermaid-svg-xV4WoMnX7jSUlIC7 .taskTextOutside2{fill:#000}#mermaid-svg-xV4WoMnX7jSUlIC7 .taskTextOutside1,#mermaid-svg-xV4WoMnX7jSUlIC7 .taskTextOutside3{fill:#000}#mermaid-svg-xV4WoMnX7jSUlIC7 .active0,#mermaid-svg-xV4WoMnX7jSUlIC7 .active1,#mermaid-svg-xV4WoMnX7jSUlIC7 .active2,#mermaid-svg-xV4WoMnX7jSUlIC7 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-xV4WoMnX7jSUlIC7 .activeText0,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeText1,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeText2,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeText3{fill:#000 !important}#mermaid-svg-xV4WoMnX7jSUlIC7 .done0,#mermaid-svg-xV4WoMnX7jSUlIC7 .done1,#mermaid-svg-xV4WoMnX7jSUlIC7 .done2,#mermaid-svg-xV4WoMnX7jSUlIC7 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-xV4WoMnX7jSUlIC7 .doneText0,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneText1,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneText2,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneText3{fill:#000 !important}#mermaid-svg-xV4WoMnX7jSUlIC7 .crit0,#mermaid-svg-xV4WoMnX7jSUlIC7 .crit1,#mermaid-svg-xV4WoMnX7jSUlIC7 .crit2,#mermaid-svg-xV4WoMnX7jSUlIC7 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-xV4WoMnX7jSUlIC7 .activeCrit0,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeCrit1,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeCrit2,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-xV4WoMnX7jSUlIC7 .doneCrit0,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneCrit1,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneCrit2,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-xV4WoMnX7jSUlIC7 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-xV4WoMnX7jSUlIC7 .milestoneText{font-style:italic}#mermaid-svg-xV4WoMnX7jSUlIC7 .doneCritText0,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneCritText1,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneCritText2,#mermaid-svg-xV4WoMnX7jSUlIC7 .doneCritText3{fill:#000 !important}#mermaid-svg-xV4WoMnX7jSUlIC7 .activeCritText0,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeCritText1,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeCritText2,#mermaid-svg-xV4WoMnX7jSUlIC7 .activeCritText3{fill:#000 !important}#mermaid-svg-xV4WoMnX7jSUlIC7 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-xV4WoMnX7jSUlIC7 g.classGroup text .title{font-weight:bolder}#mermaid-svg-xV4WoMnX7jSUlIC7 g.clickable{cursor:pointer}#mermaid-svg-xV4WoMnX7jSUlIC7 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-xV4WoMnX7jSUlIC7 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-xV4WoMnX7jSUlIC7 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-xV4WoMnX7jSUlIC7 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-xV4WoMnX7jSUlIC7 .dashed-line{stroke-dasharray:3}#mermaid-svg-xV4WoMnX7jSUlIC7 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 .commit-id,#mermaid-svg-xV4WoMnX7jSUlIC7 .commit-msg,#mermaid-svg-xV4WoMnX7jSUlIC7 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-xV4WoMnX7jSUlIC7 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-xV4WoMnX7jSUlIC7 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-xV4WoMnX7jSUlIC7 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-xV4WoMnX7jSUlIC7 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-xV4WoMnX7jSUlIC7 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-xV4WoMnX7jSUlIC7 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-xV4WoMnX7jSUlIC7 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-xV4WoMnX7jSUlIC7 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-xV4WoMnX7jSUlIC7 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-xV4WoMnX7jSUlIC7 .edgeLabel text{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-xV4WoMnX7jSUlIC7 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-xV4WoMnX7jSUlIC7 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-xV4WoMnX7jSUlIC7 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-xV4WoMnX7jSUlIC7 .note-edge{stroke-dasharray:5}#mermaid-svg-xV4WoMnX7jSUlIC7 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-xV4WoMnX7jSUlIC7 .error-icon{fill:#522}#mermaid-svg-xV4WoMnX7jSUlIC7 .error-text{fill:#522;stroke:#522}#mermaid-svg-xV4WoMnX7jSUlIC7 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-xV4WoMnX7jSUlIC7 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-xV4WoMnX7jSUlIC7 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-xV4WoMnX7jSUlIC7 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-xV4WoMnX7jSUlIC7 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-xV4WoMnX7jSUlIC7 .marker{fill:#333}#mermaid-svg-xV4WoMnX7jSUlIC7 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-xV4WoMnX7jSUlIC7 {color: rgba(0, 0, 0, 0.75);font: ;}
x_a(nT)
x'_a(t)
x_a(t)
xn
解码器
零阶保持器
平滑滤波器
out
由时域离散信号xa(nT)x_a(nT)xa(nT)恢复模拟信号的过程是内插过程。
时域离散信号和系统的频域分析
时域离散信号的傅里叶变换的定义及性质
x(t)x(t)x(t)的傅里叶变换是X(ejω)X(e^{j\omega})X(ejω),x(n)x(n)x(n)的傅里叶变换也是X(ejω)X(e^{j\omega})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{\because}{\quad}x(n)=x(t){\delta_T}(t)=x(t)\sum_{n=-\infin}^{\infin}{\delta}(t-nT)\\ {\therefore}{\quad} X(j\omega)={\mathscr{F}}[x(n)]=\int_{-\infin}^{+\infin}x(t)\sum_{n=-\infin}^{\infin}{\delta}(t-nT)e^{-j{\omega}t}d_t\\ =\sum_{n=-\infin}^{\infin}\int_{-\infin}^{+\infin}x(t)\delta(t-nT)e^{-j{\omega}t}d_t\\ =\sum_{n=-\infin}^{\infin}x(nT)e^{-j{\omega}nT}\int_{-\infin}^{+\infin}\delta(t-nT)d_t\\ =\sum_{n=-\infin}^{\infin}x(nT)e^{-j{\omega}nT} ∵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=1T=1T=1,则变为:
x(n)=xa(nT)=x(t)∣t=nT{X(ejω)=∑n=−∞+∞x(n)e−jωnx(n)=12π∫−ππX(ejω)ejωndωx(n)=x_a(nT)=x(t)\Big|_{t=nT}\\ \begin{cases} X(e^{j\omega})=\sum_{n=-\infin}^{+\infin}x(n)e^{-j{\omega}n}\\ \\ x(n)=\frac{1}{2\pi}\int_{-\pi}^{\pi}X(e^{j\omega})e^{j{\omega}n}d_{\omega} \end{cases} 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)X(e^{j\omega})=X(e^{j{\omega+2{\pi}M}})X(ejω)=X(ejω+2πM),周期为2π2\pi2π。
线性
时移和频移:
F[x(n−n0)]=e−jωn0X(ejω)F[ejΩ0nx(n)]=X(ej(ω−Ω0))\mathscr{F}\Big[x(n-n_0)\Big]=e^{-j{\omega}n_0}X(e^{j\omega})\\ \mathscr{F}\Big[e^{j{\Omega_0}n}x(n)\Big]=X(e^{j({\omega}-{\Omega_0})}) F[x(n−n0)]=e−jωn0X(ejω)F[ejΩ0nx(n)]=X(ej(ω−Ω0))
对称性:xe(n)x_e(n)xe(n)为共轭对称序列(其实部是偶函数、虚部是奇函数,即满足xe(n)=xe∗(−n)x_e(n)=x_e^{*}(-n)xe(n)=xe∗(−n));xo(n)x_o(n)xo(n)为共轭反对称序列(其实部是奇函数、虚部是偶函数,即满足xo(n)=−xo∗(−n)x_o(n)=-x_o^{*}(-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ω)\begin{cases} x(n)={\color{blue}x_r(n)}+{\color{red}jx_i(n)}\\ \\ X(e^{j\omega})={\color{blue}X_e(e^{j\omega})}+{\color{red}X_o(e^{j\omega})} \end{cases} \\ \begin{cases} x(n)={\color{blue}x_e(n)}+{\color{red}x_o(n)}\\ \\ X(e^{j\omega})={\color{blue}X_R(e^{j\omega})}+{\color{red}jX_I(e^{j\omega})} \end{cases} ⎩⎪⎨⎪⎧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ω)=12πH(ejω)∗X(ejω)=12π∫−ππH(ejθ)X(ejθ)dθ若{\quad}y(n)=h(n)x(n)\\ 则有{\quad}Y(e^{j\omega})=\frac{1}{2\pi}H(e^{j\omega})*X(e^{j\omega})\\ =\frac{1}{2\pi}\int_{-\pi}^{\pi}H(e^{j\theta})X(e^{j\theta})d_{\theta} 若y(n)=h(n)x(n)则有Y(ejω)=2π1H(ejω)∗X(ejω)=2π1∫−ππH(ejθ)X(ejθ)dθ
- 帕斯维尔定理:信号时域的能量和频域的能量的关系。
∑n=−∞+∞∣x(n)∣2=12π∫−ππ∣X(ejω)∣2dω\sum_{n=-\infin}^{+\infin}\big|x(n)\big|^2=\frac{1}{2\pi}\int_{-\pi}^{\pi}\big|X(e^{j\omega})\big|^2d_{\omega} n=−∞∑+∞∣∣x(n)∣∣2=2π1∫−ππ∣∣X(ejω)∣∣2dω
周期序列的离散傅里叶级数及傅里叶变换表达式
周期序列的离散傅里叶级数(DFS)
X(k)~=DFS[x(n)~]=∑n=0N−1x(n)~e−j2πNkn(1)x(n)~=IDFS[X(k)~]=1N∑k=0N−1X(k)~ej2πNkn(2)\widetilde{X(k)}=DFS[\widetilde{x(n)}]=\sum_{n=0}^{N-1}\widetilde{x(n)}e^{-j{\frac{2\pi}{N}}kn}{\qquad}(1)\\ \widetilde{x(n)}=IDFS[\widetilde{X(k)}]=\frac{1}{N}\sum_{k=0}^{N-1}\widetilde{X(k)}e^{j{\frac{2\pi}{N}}kn}{\qquad}(2) 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{2\pi}/N2π/N,幅度是(1/N)X~(1)(1/N){\widetilde{X}}(1)(1/N)X(1),一个周期序列可以用其DFSDFSDFS系数X~(k)\widetilde{X}(k)X(k)表示它的频谱分布规律。
周期序列的傅里叶变换表达式(FT)
复指数序列ejω0ne^{j{\omega_0}n}ejω0n的FTFTFT
首先推导复指数序列ejω0ne^{j{\omega_0}n}ejω0n的傅里叶变换如下:
X(ejω)=F[ejω0n]=∑r=−∞+∞2πδ(ω−(ω0+2πr))r为整数X(e^{j\omega})=\mathscr{F}[e^{j{\omega_0}n}]=\sum_{r=-\infin}^{+\infin}2{\pi}\delta\Big({\omega}-({\omega_0}+2{\pi}r)\Big){\quad}r为整数 X(ejω)=F[ejω0n]=r=−∞∑+∞2πδ(ω−(ω0+2πr))r为整数
上式表明:复指数序列ejω0ne^{j{\omega_0}n}ejω0n的FTFTFT是在ω0+2πr\omega_0+2{\pi}rω0+2πr处的单位冲激函数,强度为2π2\pi2π。
周期序列的FTFTFT
一般周期序列都能表示成不同复指数序列ejωne^{j{\omega}n}ejωn的叠加,因此再根据线性就可以得出该周期序列的傅里叶变换:
x(n)~=a0ejω0n+a1ejω1n+...+amejωmn\widetilde{x(n)}=a_0e^{j{\omega_0}n}+a_1e^{j{\omega_1}n}+...+a_me^{j{\omega_m}n}\\ x(n)=a0ejω0n+a1ejω1n+...+amejωmn
或者这样考虑,对一般周期序列x(n)~\widetilde{x(n)}x(n)展开成DFSDFSDFS,第k次谐波为(X(k)~/N)ej2πNkn(\widetilde{X(k)}/N)e^{j\frac{2\pi}{N}kn}(X(k)/N)ejN2πkn,类似于复指数序列的FTFTFT,其FTFTFT为:
∑r=−∞+∞2πX(k)~Nδ(ω−(2πNk+2πr))r为整数\color{blue}\sum_{r=-\infin}^{+\infin}2{\pi}\frac{\widetilde{X(k)}}{N}\delta\Big({\omega}-({\frac{2\pi}{N}k}+2{\pi}r)\Big){\quad}r为整数 r=−∞∑+∞2πNX(k)δ(ω−(N2πk+2πr))r为整数
上面是第k次谐波的FTFTFT,那么整个周期序列的FTFTFT为:
X(ejω)=F[x(n)~]=∑k=0N−1∑r=−∞+∞2πX(k)~Nδ(ω−(2πNk+2πr))r为整数X(e^{j\omega})={\mathscr{F}}[\widetilde{x(n)}]=\sum_{k=0}^{N-1}{\color{blue}\sum_{r={-\infin}}^{+\infin}2{\pi}\frac{{\widetilde{X(k)}}}{N}\delta\Big({\omega}-({\frac{2\pi}{N}k}+2{\pi}r)\Big){\quad}r为整数}\\ X(ejω)=F[x(n)]=k=0∑N−1r=−∞∑+∞2πNX(k)δ(ω−(N2πk+2πr))r为整数
式中,K=0,1,2,...,N−1K=0,1,2,...,N-1K=0,1,2,...,N−1。如果让k在−∞-\infin−∞到+∞+\infin+∞区间变换,上式可简化为:
X(ejω)=∑k=−∞∞2πX(k)~Nδ(ω−2πNk)式中X(k)~=∑n=0N−1x(n)~e−j2πNknX(e^{j\omega})=\sum_{k={-\infin}}^{\infin}{2\pi}\frac{\widetilde{X(k)}}{N}\delta(\omega-\frac{2\pi}{N}k)\\ 式中{\qquad}{\widetilde{X(k)}}=\sum_{n=0}^{N-1}\widetilde{x(n)}e^{-j{\frac{2\pi}{N}}kn} X(ejω)=k=−∞∑∞2πNX(k)δ(ω−N2πk)式中X(k)=n=0∑N−1x(n)e−jN2πkn
对于同一个周期信号,其DTS和FT的模的形状是一样的,不同的是FT用单位冲激函数表示(用带箭头的竖线表示)。因此周期序列的频谱分布用其DFS或者FT表示都可以,但画图时应注意单位冲激函数的画法。
周期序列的FTFTFT与周期信号FTFTFT的联系
还记得周期信号fT(t)f_T(t)fT(t)的傅里叶变换(FT(jω))(F_T(j\omega))(FT(jω))是什么吗?(省略掉推导):
FT(jw)=∑n=−∞∞2πFnδ(ω−nω0)F(ejω)=∑k=0N−1∑r=−∞+∞2πF(k)~Nδ(ω−(2πNk+2πr))r为整数F_T(jw)=\sum_{n=-\infin}^{\infin}2{\pi}F_n{\delta}(\omega-n\omega_0)\\ F(e^{j\omega})=\sum_{k=0}^{N-1}{\color{blue}\sum_{r={-\infin}}^{+\infin}2{\pi}\frac{{\widetilde{F(k)}}}{N}\delta\Big({\omega}-({\frac{2\pi}{N}k}+2{\pi}r)\Big){\quad}r为整数}\\ FT(jw)=n=−∞∑∞2πFnδ(ω−nω0)F(ejω)=k=0∑N−1r=−∞∑+∞2πNF(k)δ(ω−(N2πk+2πr))r为整数
上式表明:周期信号的傅里叶变换由无穷多个出现在谐波频率nω0n\omega_0nω0上的冲激函数组成,每一冲激的强度为傅里叶系数FnF_nFn乘上2π2\pi2π。
看出来周期序列和周期信号的傅里叶变换有什么关系了吗?其实两者是一样的:
- 都是由不同位置的冲激叠加而成;
- 冲激的强度都是傅氏系数乘上2π2\pi2π(复指数序列的系数为1)。
但也有不同点,就是冲激位置的规律有点不一样:
- 周期信号的冲激在谐波频率nω0n\omega_0nω0上
- 周期序列的冲激在2πNk+2πr,r\frac{2{\pi}}{N}k+2{\pi}r,rN2πk+2πr,r为整数处,具有周期性为2π2\pi2π。
为什么会出现周期性呢?并且周期为2π2\pi2π,请看开头的数字频率与模拟频率的关系与特点。
时域离散信号的FT与模拟信号FT之间的关系
X(ejΩT)=1T∑k=−∞∞Xa(jΩ−jkΩs)X(ejω)=1T∑k=−∞∞Xa(jω−2πkT)Ωs=2πFs=2πTX(e^{j{\Omega}T})=\frac{1}{T}\sum_{k=-\infin}^{\infin}X_a(j\Omega-jk\Omega_s)\\ X(e^{j\omega})=\frac{1}{T}\sum_{k=-\infin}^{\infin}X_a(j\frac{\omega-2{\pi}k}{T})\\ \Omega_s=2{\pi}F_s=\frac{2\pi}{T} X(ejΩT)=T1k=−∞∑∞Xa(jΩ−jkΩs)X(ejω)=T1k=−∞∑∞Xa(jTω−2πk)Ωs=2πFs=T2π
上式表明:时域离散信号的频谱也是模拟信号频谱的周期性延拓,周期为Ωs=2πFs=2πT\Omega_s=2{\pi}F_s=\frac{2{\pi}}{T}Ωs=2πFs=T2π。
序列的ZZZ变换
Z变换的定义及与序列的FT的关系
X(z)=def=∑n=−∞+∞x(n)z−n∑n=−∞+∞∣x(n)z−n∣<∞X(z)=^{def}=\sum_{n=-\infin}^{+\infin}x(n)z^{-n}\\ \sum_{n=-\infin}^{+\infin}\Big|x(n)z^{-n}\Big|<{\infin}\\ X(z)=def=n=−∞∑+∞x(n)z−nn=−∞∑+∞∣∣∣x(n)z−n∣∣∣<∞
ZZZ变换的收敛域一般是一个环带状,即Rx−<∣z∣<Rx+R_{x-}<\big|z\big|<R_{x+}Rx−<∣∣z∣∣<Rx+。如果ZZZ变换的收敛域包括单位圆,那么:
X(ejω)=X(z)∣z=ejωX(e^{j\omega})=X(z)\Big|_{z=e^{j\omega}} X(ejω)=X(z)∣∣∣z=ejω
即单位圆上的Z变换就是序列的傅里叶变换(前提是在单位圆上收敛)。
Z变换的性质
设X(z)=Z[x(n)]Rx−<∣z∣<Rx+X(z)=\mathscr{Z}\big[x(n)\big]{\quad}R_{x-}<\big|z\big|<R_{x+}X(z)=Z[x(n)]Rx−<∣∣z∣∣<Rx+,则有如下性质:
线性
移位性质:
Z[x(n−n0)]=z−n0X(z)Rx−<∣z∣<Rx+\mathscr{Z}\big[x(n-n_0)\big]=z^{-n_0}X(z){\quad}R_{x-}<\big|z\big|<R_{x+} Z[x(n−n0)]=z−n0X(z)Rx−<∣∣z∣∣<Rx+
序列乘以指数序列的性质:
y(n)=anx(n)Y(z)=Z[anx(n)]=X(a−1Z)∣a∣Rx−<∣z∣<∣a∣Rx+y(n)=a^{n}x(n)\\ Y(z)=\mathscr{Z}\big[a^{n}x(n)\big]=X(a^{-1}Z){\quad}|a|R_{x-}<\big|z\big|<|a|R_{x+} y(n)=anx(n)Y(z)=Z[anx(n)]=X(a−1Z)∣a∣Rx−<∣∣z∣∣<∣a∣Rx+
序列乘以n的ZT
X(z)=Z[nx(n)]=−zdX(z)dzRx−<∣z∣<Rx+X(z)=\mathscr{Z}\big[nx(n)\big]=-z\frac{dX(z)}{dz}{\quad}R_{x-}<\big|z\big|<R_{x+} X(z)=Z[nx(n)]=−zdzdX(z)Rx−<∣∣z∣∣<Rx+
复共轭序列的ZT
X(z)=Z[x∗(n)]=X∗(z∗)Rx−<∣z∣<Rx+X(z)=\mathscr{Z}\big[x^{*}(n)\big]=X^{*}(z^{*}){\quad}R_{x-}<\big|z\big|<R_{x+} X(z)=Z[x∗(n)]=X∗(z∗)Rx−<∣∣z∣∣<Rx+
初值定理:x(n)x(n)x(n)是因果序列,则:
x(0)=limz→∞X(z)x(0)=\lim_{z{\to}\infin}X(z) x(0)=z→∞limX(z)
终值定理:x(n)x(n)x(n)是因果序列,其ZZZ变换的极点除可以有一个一阶极点在z=1z=1z=1上,其它极点都在单位圆内,则:
limn→∞x(n)=limz→1(z−1)X(z)\lim_{n{\to}\infin}x(n)=\lim_{z{\to}1}(z-1)X(z) n→∞limx(n)=z→1lim(z−1)X(z)
时域卷积定理:W(z)W(z)W(z)的收敛域就是X(z)X(z)X(z)和Y(z)Y(z)Y(z)的公共收敛域。
W(z)=Z[x(n)∗y(n)]=X(z)Y(z)Rw−<∣z∣<Rw+{Rw+=min[Rx+,Ry+]Rw−=max[Rx−,Ry−]W(z)=\mathscr{Z}\big[x(n)^{*}y(n)\big]=X(z)Y(z){\quad}R_{w-}<\big|z\big|<R_{w+}\\ \begin{cases} R_{w+}=\min{\big[R_{x+},R_{y+}\big]}\\ R_{w-}=\max{\big[R_{x-},R_{y-}\big]}\\ \end{cases} W(z)=Z[x(n)∗y(n)]=X(z)Y(z)Rw−<∣∣z∣∣<Rw+{Rw+=min[Rx+,Ry+]Rw−=max[Rx−,Ry−]
复卷积定理:不常用
帕斯维尔定理:不常用
利用Z变换分析信号和系统的频响特性
频率响应函数与系统函数
设系统初始状态为0,系统对δ(n)\delta(n)δ(n)的响应h(n)h(n)h(n)的傅里叶变换H(ejω)H(e^{j\omega})H(ejω)称为系统的频率响应函数,即:
H(ejω)=∑n=−∞+∞h(n)e−jωn=∣H(ejωn)∣ejϕ(ω){幅频特性:∣H(ejωn)∣相频特性:ϕ(ω)H(e^{j\omega})=\sum_{n=-\infin}^{+\infin}h(n)e^{-j{\omega}n}=\Big|H(e^{j{\omega}n})\Big|e^{j\phi(\omega)}\\ \begin{cases} 幅频特性:\Big|H(e^{j{\omega}n})\Big|\\ 相频特性:\phi(\omega) \end{cases} H(ejω)=n=−∞∑+∞h(n)e−jωn=∣∣∣H(ejωn)∣∣∣ejϕ(ω){幅频特性:∣∣∣H(ejωn)∣∣∣相频特性:ϕ(ω)
将序列h(n)h(n)h(n)进行Z变换得到H(z)H(z)H(z),这就是该系统的系统函数,即:
H(z)=Y(z)X(z)=∑i=0Mbiz−i∑i=0Naiz−iH(z)=\frac{Y(z)}{X(z)}=\frac{\sum_{i=0}^{M}b_iz^{-i}}{\sum_{i=0}^{N}a_iz^{-i}} H(z)=X(z)Y(z)=∑i=0Naiz−i∑i=0Mbiz−i
如果Z变换的收敛域包含单位圆,则:
H(ejω)=H(z)∣z=ejωH(e^{j\omega})=H(z)\Big|_{z=e^{j\omega}} H(ejω)=H(z)∣∣∣z=ejω
输入序列ejωne^{j{\omega}n}ejωn的频率响应
y(n)=h(n)∗x(n)=...=H(ejω)ejωn=∣H(ejωn)∣ej[ωn+ϕ(ω)]y(n)=h(n)^{*}x(n)=...=H(e^{j\omega})e^{j{\omega}n}\\ =\Big|H(e^{j{\omega}n})\Big|e^{j\big[{\omega}n+\phi(\omega)\big]}\\ y(n)=h(n)∗x(n)=...=H(ejω)ejωn=∣∣∣H(ejωn)∣∣∣ej[ωn+ϕ(ω)]
上式说明:单频复指数序列ejωne^{j{\omega}n}ejωn通过频率响应函数为H(ejω)H(e^{j\omega})H(ejω)的系统后,输出还是单频复指数序列,只不过幅度放大∣H(ejωn)∣\Big|H(e^{j{\omega}n})\Big|∣∣∣H(ejωn)∣∣∣倍,相移为ϕ(ω)\phi(\omega)ϕ(ω)。
利用系统的零极点分布分析系统的频率响应特性
H(z)=A∏r=1M(1−crz−1)∏r=1N(1−drz−1)∣H(ejω)∣=∣A∣∏r=1M∣zr∣∏r=1N∣Pr∣ϕ(ω)=ω(N−M)+∑r=1Nαr−∑r=1MβrH(z)=A\frac{\prod_{r=1}^M(1-c_rz^{-1})}{\prod_{r=1}^{N}(1-d_rz^{-1})} \\ |H(e^{j\omega})|=|A|\frac{\prod_{r=1}^M|z_r|}{\prod_{r=1}^N{|P_r|}} \\ \phi(\omega)=\omega(N-M)+\sum_{r=1}^{N}\alpha_r-\sum_{r=1}^{M}\beta_r 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
即:
- 幅频响应等于所有的零点到ω\omegaω的模长的乘积除以所有的极点到ω\omegaω的模长的乘积;
- 相频响应等于所有的零点与ω\omegaω形成的夹角之和减去所有的极点与ω\omegaω形成的夹角之和。
几种特殊系统的系统函数及特点
全通滤波器
∣H(ejω)∣=10≤ω≤2π|H(e^{j\omega})|=1{\quad}0{\le}\omega{\le}2\pi ∣H(ejω)∣=10≤ω≤2π
梳妆滤波器
H(zN)=1−z−N1−az−N0<a<1H(z^{N})=\frac{1-z^{-N}}{1-az^{-N}}{\qquad}0<a<1 H(zN)=1−az−N1−z−N0<a<1
梳妆滤波器可以滤除输入信号中ω=2πNk,k=0,1,...,N−1\omega=\frac{2\pi}{N}k,\ k=0,1,...,N-1ω=N2πk, k=0,1,...,N−1的频率分量,可以滤除电网谐波干扰和其它频谱等间隔分布的干扰。当a=1a=1a=1时就变成了全通滤波器,下面给出频率响应和零极点分布的MATLABMATLABMATLAB代码:
% 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.2a=0.2a=0.2时的频率响应和零极点分布图:
![](/assets/blank.gif)
![](/assets/blank.gif)
a=0.9a=0.9a=0.9时的频率响应和零极点分布图:
![](/assets/blank.gif)
![](/assets/blank.gif)
离散傅里叶变换(DFT)
对离散时间序列x(n)x(n)x(n)进行FT得到的结果在频域仍然是连续的,不便于计算机处理。因此目的是对频域也进行离散化,方法有多种,如DFT、DFS。对于DFS,主要步骤就是对x(n)x(n)x(n)进行周期性延拓,然后计算其傅里叶级数,该结果和DFT的结果是有关联的。
DFT的定义
X(k)=DFT[x(n)]=∑n=0N−1x(n)WNknk=0,1,...,N−1x(n)=IDFT[X(k)]=1N∑k=0N−1X(K)WN−knn=0,1,...,N−1WN=e−j2πNX(k)=DFT[x(n)]=\sum_{n=0}^{N-1}x(n)W_N^{kn}{\quad}k=0,1,...,N-1\\ x(n)=IDFT[X(k)]=\frac{1}{N}\sum_{k=0}^{N-1}X(K)W_N^{-kn}{\quad}n=0,1,...,N-1\\ W_N=e^{-j\frac{2\pi}{N}}\\ 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−j2πNW_N=e^{-j\frac{2\pi}{N}}WN=e−jN2π(旋转因子)带入即得:
X(k)=DFT[x(n)]=∑n=0N−1x(n)e−j2πNknk=0,1,...,N−1x(n)=IDFT[X(k)]=1N∑k=0N−1X(k)ej2πNknn=0,1,...,N−1X(k)=DFT[x(n)]=\sum_{n=0}^{N-1}x(n)e^{-j\frac{2\pi}{N}kn}{\quad}k=0,1,...,N-1\\ x(n)=IDFT[X(k)]=\frac{1}{N}\sum_{k=0}^{N-1}X(k)e^{j\frac{2\pi}{N}kn}{\quad}n=0,1,...,N-1 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−j2πNkn(1)x(n)~=IDFS[X(k)~]=1N∑k=0N−1X(k)~ej2πNkn(2)DFT:{X(k)=DFT[x(n)]=∑n=0N−1x(n)e−j2πNknk=0,1,...,N−1(3)x(n)=IDFT[X(k)]=1N∑k=0N−1X(k)ej2πNknn=0,1,...,N−1(4)DFS: \begin{cases} \widetilde{X(k)}=DFS[\widetilde{x(n)}]=\sum_{n=0}^{N-1}\widetilde{x(n)}e^{-j{\frac{2\pi}{N}}kn}{\qquad}(1)\\ \\ \widetilde{x(n)}=IDFS[\widetilde{X(k)}]=\frac{1}{N}\sum_{k=0}^{N-1}\widetilde{X(k)}e^{j{\frac{2\pi}{N}}kn}{\qquad}(2)\\ \end{cases} \\ DFT: \begin{cases} X(k)=DFT[x(n)]=\sum_{n=0}^{N-1}x(n)e^{-j\frac{2\pi}{N}kn}{\quad}k=0,1,...,N-1{\quad}(3)\\ \\ x(n)=IDFT[X(k)]=\frac{1}{N}\sum_{k=0}^{N-1}X(k)e^{j\frac{2\pi}{N}kn}{\quad}n=0,1,...,N-1{\quad}(4)\\ \end{cases} 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)s(n)s(n)是周期序列,周期为NNN,那么其一个周期s1N(n)s_{1N}(n)s1N(n)的NNN点DFTDFTDFT就等于其DFSDFSDFS的主值序列。即:
S(k)=DFT[s1N(n)]=S(k)~RN(n)=DFS[s(n)~]RN(n){\color{blue}S(k)}=DFT[s_{1N}(n)]={\color{blue}\widetilde{S(k)}R_N(n)}=DFS[\widetilde{s(n)}]R_N(n) S(k)=DFT[s1N(n)]=S(k)RN(n)=DFS[s(n)]RN(n)
如果s(n)s(n)s(n)是非周期序列,那么对其进行周期性延拓得到s(n)~\widetilde{s(n)}s(n)的DFS的主值序列就等于其DFT的结果。即:
S(k)~RN(n)=DFS[s(n)~]RN(n)=S(k)=DFT[s(n)]{\color{blue}\widetilde{S(k)}R_N(n)}=DFS[\widetilde{s(n)}]R_N(n)={\color{blue}S(k)}=DFT[s(n)] S(k)RN(n)=DFS[s(n)]RN(n)=S(k)=DFT[s(n)]
DFT与FT/ZT的关系
设序列x(n)x(n)x(n)的长度为M。
#mermaid-svg-UlgmaRD47Vngve5x .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-UlgmaRD47Vngve5x .label text{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .node rect,#mermaid-svg-UlgmaRD47Vngve5x .node circle,#mermaid-svg-UlgmaRD47Vngve5x .node ellipse,#mermaid-svg-UlgmaRD47Vngve5x .node polygon,#mermaid-svg-UlgmaRD47Vngve5x .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-UlgmaRD47Vngve5x .node .label{text-align:center;fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .node.clickable{cursor:pointer}#mermaid-svg-UlgmaRD47Vngve5x .arrowheadPath{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-UlgmaRD47Vngve5x .flowchart-link{stroke:#333;fill:none}#mermaid-svg-UlgmaRD47Vngve5x .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-UlgmaRD47Vngve5x .edgeLabel rect{opacity:0.9}#mermaid-svg-UlgmaRD47Vngve5x .edgeLabel span{color:#333}#mermaid-svg-UlgmaRD47Vngve5x .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-UlgmaRD47Vngve5x .cluster text{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-UlgmaRD47Vngve5x .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-UlgmaRD47Vngve5x text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-UlgmaRD47Vngve5x .actor-line{stroke:grey}#mermaid-svg-UlgmaRD47Vngve5x .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-UlgmaRD47Vngve5x .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-UlgmaRD47Vngve5x #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-UlgmaRD47Vngve5x .sequenceNumber{fill:#fff}#mermaid-svg-UlgmaRD47Vngve5x #sequencenumber{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x #crosshead path{fill:#333;stroke:#333}#mermaid-svg-UlgmaRD47Vngve5x .messageText{fill:#333;stroke:#333}#mermaid-svg-UlgmaRD47Vngve5x .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-UlgmaRD47Vngve5x .labelText,#mermaid-svg-UlgmaRD47Vngve5x .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-UlgmaRD47Vngve5x .loopText,#mermaid-svg-UlgmaRD47Vngve5x .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-UlgmaRD47Vngve5x .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-UlgmaRD47Vngve5x .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-UlgmaRD47Vngve5x .noteText,#mermaid-svg-UlgmaRD47Vngve5x .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-UlgmaRD47Vngve5x .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-UlgmaRD47Vngve5x .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-UlgmaRD47Vngve5x .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-UlgmaRD47Vngve5x .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x .section{stroke:none;opacity:0.2}#mermaid-svg-UlgmaRD47Vngve5x .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-UlgmaRD47Vngve5x .section2{fill:#fff400}#mermaid-svg-UlgmaRD47Vngve5x .section1,#mermaid-svg-UlgmaRD47Vngve5x .section3{fill:#fff;opacity:0.2}#mermaid-svg-UlgmaRD47Vngve5x .sectionTitle0{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .sectionTitle1{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .sectionTitle2{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .sectionTitle3{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-UlgmaRD47Vngve5x .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x .grid path{stroke-width:0}#mermaid-svg-UlgmaRD47Vngve5x .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-UlgmaRD47Vngve5x .task{stroke-width:2}#mermaid-svg-UlgmaRD47Vngve5x .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x .taskText:not([font-size]){font-size:11px}#mermaid-svg-UlgmaRD47Vngve5x .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-UlgmaRD47Vngve5x .task.clickable{cursor:pointer}#mermaid-svg-UlgmaRD47Vngve5x .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-UlgmaRD47Vngve5x .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-UlgmaRD47Vngve5x .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-UlgmaRD47Vngve5x .taskText0,#mermaid-svg-UlgmaRD47Vngve5x .taskText1,#mermaid-svg-UlgmaRD47Vngve5x .taskText2,#mermaid-svg-UlgmaRD47Vngve5x .taskText3{fill:#fff}#mermaid-svg-UlgmaRD47Vngve5x .task0,#mermaid-svg-UlgmaRD47Vngve5x .task1,#mermaid-svg-UlgmaRD47Vngve5x .task2,#mermaid-svg-UlgmaRD47Vngve5x .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-UlgmaRD47Vngve5x .taskTextOutside0,#mermaid-svg-UlgmaRD47Vngve5x .taskTextOutside2{fill:#000}#mermaid-svg-UlgmaRD47Vngve5x .taskTextOutside1,#mermaid-svg-UlgmaRD47Vngve5x .taskTextOutside3{fill:#000}#mermaid-svg-UlgmaRD47Vngve5x .active0,#mermaid-svg-UlgmaRD47Vngve5x .active1,#mermaid-svg-UlgmaRD47Vngve5x .active2,#mermaid-svg-UlgmaRD47Vngve5x .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-UlgmaRD47Vngve5x .activeText0,#mermaid-svg-UlgmaRD47Vngve5x .activeText1,#mermaid-svg-UlgmaRD47Vngve5x .activeText2,#mermaid-svg-UlgmaRD47Vngve5x .activeText3{fill:#000 !important}#mermaid-svg-UlgmaRD47Vngve5x .done0,#mermaid-svg-UlgmaRD47Vngve5x .done1,#mermaid-svg-UlgmaRD47Vngve5x .done2,#mermaid-svg-UlgmaRD47Vngve5x .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-UlgmaRD47Vngve5x .doneText0,#mermaid-svg-UlgmaRD47Vngve5x .doneText1,#mermaid-svg-UlgmaRD47Vngve5x .doneText2,#mermaid-svg-UlgmaRD47Vngve5x .doneText3{fill:#000 !important}#mermaid-svg-UlgmaRD47Vngve5x .crit0,#mermaid-svg-UlgmaRD47Vngve5x .crit1,#mermaid-svg-UlgmaRD47Vngve5x .crit2,#mermaid-svg-UlgmaRD47Vngve5x .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-UlgmaRD47Vngve5x .activeCrit0,#mermaid-svg-UlgmaRD47Vngve5x .activeCrit1,#mermaid-svg-UlgmaRD47Vngve5x .activeCrit2,#mermaid-svg-UlgmaRD47Vngve5x .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-UlgmaRD47Vngve5x .doneCrit0,#mermaid-svg-UlgmaRD47Vngve5x .doneCrit1,#mermaid-svg-UlgmaRD47Vngve5x .doneCrit2,#mermaid-svg-UlgmaRD47Vngve5x .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-UlgmaRD47Vngve5x .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-UlgmaRD47Vngve5x .milestoneText{font-style:italic}#mermaid-svg-UlgmaRD47Vngve5x .doneCritText0,#mermaid-svg-UlgmaRD47Vngve5x .doneCritText1,#mermaid-svg-UlgmaRD47Vngve5x .doneCritText2,#mermaid-svg-UlgmaRD47Vngve5x .doneCritText3{fill:#000 !important}#mermaid-svg-UlgmaRD47Vngve5x .activeCritText0,#mermaid-svg-UlgmaRD47Vngve5x .activeCritText1,#mermaid-svg-UlgmaRD47Vngve5x .activeCritText2,#mermaid-svg-UlgmaRD47Vngve5x .activeCritText3{fill:#000 !important}#mermaid-svg-UlgmaRD47Vngve5x .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-UlgmaRD47Vngve5x g.classGroup text .title{font-weight:bolder}#mermaid-svg-UlgmaRD47Vngve5x g.clickable{cursor:pointer}#mermaid-svg-UlgmaRD47Vngve5x g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-UlgmaRD47Vngve5x g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-UlgmaRD47Vngve5x .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-UlgmaRD47Vngve5x .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-UlgmaRD47Vngve5x .dashed-line{stroke-dasharray:3}#mermaid-svg-UlgmaRD47Vngve5x #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x .commit-id,#mermaid-svg-UlgmaRD47Vngve5x .commit-msg,#mermaid-svg-UlgmaRD47Vngve5x .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-UlgmaRD47Vngve5x g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-UlgmaRD47Vngve5x g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-UlgmaRD47Vngve5x g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-UlgmaRD47Vngve5x .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-UlgmaRD47Vngve5x .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-UlgmaRD47Vngve5x .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-UlgmaRD47Vngve5x .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-UlgmaRD47Vngve5x .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-UlgmaRD47Vngve5x .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-UlgmaRD47Vngve5x .edgeLabel text{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-UlgmaRD47Vngve5x .node circle.state-start{fill:black;stroke:black}#mermaid-svg-UlgmaRD47Vngve5x .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-UlgmaRD47Vngve5x #statediagram-barbEnd{fill:#9370db}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-state .divider{stroke:#9370db}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-UlgmaRD47Vngve5x .note-edge{stroke-dasharray:5}#mermaid-svg-UlgmaRD47Vngve5x .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-UlgmaRD47Vngve5x .error-icon{fill:#522}#mermaid-svg-UlgmaRD47Vngve5x .error-text{fill:#522;stroke:#522}#mermaid-svg-UlgmaRD47Vngve5x .edge-thickness-normal{stroke-width:2px}#mermaid-svg-UlgmaRD47Vngve5x .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-UlgmaRD47Vngve5x .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-UlgmaRD47Vngve5x .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-UlgmaRD47Vngve5x .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-UlgmaRD47Vngve5x .marker{fill:#333}#mermaid-svg-UlgmaRD47Vngve5x .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-UlgmaRD47Vngve5x {color: rgba(0, 0, 0, 0.75);font: ;}
N点DFT
ZT
FT
单位圆上N点等间隔采样
0到2pi区间N点等间隔采样
xn
Xk
Xz
Xw
X(z)=ZT[x(n)]=∑n=0M−1x(n)z−n(1)X(ejω)=DTFT[x(n)]=∑n=0M−1x(n)e−jωn(2)X(k)=DFT[x(n)]N=∑n=0M−1x(n)WNkn=∑n=0M−1x(n)e−j2πNnkk=0,1,...,N−1(3)X(z)=ZT[x(n)]=\sum_{n=0}^{M-1}x(n)z^{-n}{\quad}(1)\\ X(e^{j\omega})=DTFT[x(n)]=\sum_{n=0}^{M-1}x(n)e^{-j{\omega}n}{\quad}(2)\\ X(k)=DFT[x(n)]_N=\sum_{n=0}^{M-1}x(n)W_N^{kn}\\ =\sum_{n=0}^{M-1}x(n)e^{-j\frac{2\pi}{N}nk}{\quad}k=0,1,...,N-1{\quad}(3) 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)x(n)x(n)的N点DFT-X(k)X(k)X(k)是x(n)x(n)x(n)的Z变换在单位圆上的N点等间隔采样;
X(k)=X(z)∣z=ej2πNkk=0,1,...,N−1X(k)=X(z)\big|_{\color{blue}z=e^{j\frac{2\pi}{N}k}}{\quad}k=0,1,...,N-1 X(k)=X(z)∣∣z=ejN2πkk=0,1,...,N−1
X(k)X(k)X(k)是x(n)x(n)x(n)的傅里叶变换X(ejω)X(e^{j\omega})X(ejω)在区间[0,2π][0,\ 2\pi][0, 2π]上的N点等间隔采样;
X(k)=X(ejω)∣w=2πNkk=0,1,...,N−1X(k)=X(e^{j\omega})\big|_{\color{blue}w=\frac{2\pi}{N}k}{\quad}k=0,1,...,N-1 X(k)=X(ejω)∣∣w=N2πkk=0,1,...,N−1
DFT的隐含周期性
∵WNk=WNk+mNk,m为整数,N为自然数∴X(k+mN)=...=X(k){\because}{\quad}W_N^k=W_N^{k+mN}{\qquad}k,m为整数,N为自然数\\ {\therefore}{\quad}X(k+mN)=...=X(k) ∵WNk=WNk+mNk,m为整数,N为自然数∴X(k+mN)=...=X(k)
任何周期为N的周期序列x(n)~\widetilde{x(n)}x(n)都可以看做长度为N的有限长序列x(n)x(n)x(n)的周期性延拓序列,而x(n)x(n)x(n)是x(n)~\widetilde{x(n)}x(n)的一个周期,即:
x(n)~=∑m=−∞+∞x(n+mN)x(n)=x(n)~RN(n)\widetilde{x(n)}=\sum_{m=-\infin}^{+\infin}x(n+mN)\\ x(n)=\widetilde{x(n)}R_N(n) x(n)=m=−∞∑+∞x(n+mN)x(n)=x(n)RN(n)
有限长序列x(n)x(n)x(n)的N点DFT的结果X(k)X(k)X(k)恰好是x(n)x(n)x(n)的周期性延拓序列x((n))Nx((n))_Nx((n))N的DFS的结果X(k)~\widetilde{X(k)}X(k)的主值序列,即:
X(k)=X(k)~RN(k)X(k)=\widetilde{X(k)}R_N(k) X(k)=X(k)RN(k)
因此X(k)X(k)X(k)实质上就是x(n)x(n)x(n)的周期延拓序列x((n))Nx((n))_Nx((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)时域循环移位定理 \begin{cases} & y(n)=x((n+m))_NR_N(n)\\ & Y(k)=DFT[y(n)]=W_N^{-km}X(k)\\ \end{cases} \\ 频域循环移位定理 \begin{cases} & Y(k)=X((k+l))_NR_N(k)\\ & y(n)=IDFT[Y(K)]_N=W_N^{nl}x(n) \end{cases} 时域循环移位定理{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=0N−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)]if{\quad}x(n)=x_2(n){\color{blue}*_L}x_1(n)\\ =[\sum_{m=0}^{N-1}x_2(m)x_1((n-m))_N]R_N(n)\\ have{\quad}X(k)=DFT[x(n)]_N=X_1(k)X_2(k)\\ X_1(k)=DFT[x_1(n)]\\ X_2(k)=DFT[x_2(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)]\begin{cases} &x(n)=x_{ep}(n)+x_{op}(n)\\ &X(k)=X_R(k)+jX_I(k)\\ \end{cases} \\ \begin{cases} &X_R(k)=DFT[x_{ep}(n)]\\ &jX_I(k)=DFT[x_{op}(n)]\\ \end{cases} {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)y_c(n)=\Big[\sum_{i=-\infin}^{\infin}y_l(n+iL)\Big]R_L(n) yc(n)=[i=−∞∑∞yl(n+iL)]RL(n)
即循环卷积等于线性卷积以L为周期进行周期延拓后的序列的主值序列,若要求循环卷积和线性卷积相等,则需要周期延拓后无混叠,即L≥N+M−1L{\ge}N+M-1L≥N+M−1。
频率域采样
由X(k)X(k)X(k)恢复出x(n)x(n)x(n)的条件
#mermaid-svg-F8eLfd5LkA7YQT9B .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .label text{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .node rect,#mermaid-svg-F8eLfd5LkA7YQT9B .node circle,#mermaid-svg-F8eLfd5LkA7YQT9B .node ellipse,#mermaid-svg-F8eLfd5LkA7YQT9B .node polygon,#mermaid-svg-F8eLfd5LkA7YQT9B .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-F8eLfd5LkA7YQT9B .node .label{text-align:center;fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .node.clickable{cursor:pointer}#mermaid-svg-F8eLfd5LkA7YQT9B .arrowheadPath{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-F8eLfd5LkA7YQT9B .flowchart-link{stroke:#333;fill:none}#mermaid-svg-F8eLfd5LkA7YQT9B .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-F8eLfd5LkA7YQT9B .edgeLabel rect{opacity:0.9}#mermaid-svg-F8eLfd5LkA7YQT9B .edgeLabel span{color:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-F8eLfd5LkA7YQT9B .cluster text{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-F8eLfd5LkA7YQT9B .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-F8eLfd5LkA7YQT9B text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-F8eLfd5LkA7YQT9B .actor-line{stroke:grey}#mermaid-svg-F8eLfd5LkA7YQT9B .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-F8eLfd5LkA7YQT9B #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .sequenceNumber{fill:#fff}#mermaid-svg-F8eLfd5LkA7YQT9B #sequencenumber{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B #crosshead path{fill:#333;stroke:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .messageText{fill:#333;stroke:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-F8eLfd5LkA7YQT9B .labelText,#mermaid-svg-F8eLfd5LkA7YQT9B .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-F8eLfd5LkA7YQT9B .loopText,#mermaid-svg-F8eLfd5LkA7YQT9B .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-F8eLfd5LkA7YQT9B .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-F8eLfd5LkA7YQT9B .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-F8eLfd5LkA7YQT9B .noteText,#mermaid-svg-F8eLfd5LkA7YQT9B .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-F8eLfd5LkA7YQT9B .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-F8eLfd5LkA7YQT9B .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-F8eLfd5LkA7YQT9B .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-F8eLfd5LkA7YQT9B .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B .section{stroke:none;opacity:0.2}#mermaid-svg-F8eLfd5LkA7YQT9B .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-F8eLfd5LkA7YQT9B .section2{fill:#fff400}#mermaid-svg-F8eLfd5LkA7YQT9B .section1,#mermaid-svg-F8eLfd5LkA7YQT9B .section3{fill:#fff;opacity:0.2}#mermaid-svg-F8eLfd5LkA7YQT9B .sectionTitle0{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .sectionTitle1{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .sectionTitle2{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .sectionTitle3{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-F8eLfd5LkA7YQT9B .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B .grid path{stroke-width:0}#mermaid-svg-F8eLfd5LkA7YQT9B .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-F8eLfd5LkA7YQT9B .task{stroke-width:2}#mermaid-svg-F8eLfd5LkA7YQT9B .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B .taskText:not([font-size]){font-size:11px}#mermaid-svg-F8eLfd5LkA7YQT9B .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-F8eLfd5LkA7YQT9B .task.clickable{cursor:pointer}#mermaid-svg-F8eLfd5LkA7YQT9B .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-F8eLfd5LkA7YQT9B .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-F8eLfd5LkA7YQT9B .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-F8eLfd5LkA7YQT9B .taskText0,#mermaid-svg-F8eLfd5LkA7YQT9B .taskText1,#mermaid-svg-F8eLfd5LkA7YQT9B .taskText2,#mermaid-svg-F8eLfd5LkA7YQT9B .taskText3{fill:#fff}#mermaid-svg-F8eLfd5LkA7YQT9B .task0,#mermaid-svg-F8eLfd5LkA7YQT9B .task1,#mermaid-svg-F8eLfd5LkA7YQT9B .task2,#mermaid-svg-F8eLfd5LkA7YQT9B .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-F8eLfd5LkA7YQT9B .taskTextOutside0,#mermaid-svg-F8eLfd5LkA7YQT9B .taskTextOutside2{fill:#000}#mermaid-svg-F8eLfd5LkA7YQT9B .taskTextOutside1,#mermaid-svg-F8eLfd5LkA7YQT9B .taskTextOutside3{fill:#000}#mermaid-svg-F8eLfd5LkA7YQT9B .active0,#mermaid-svg-F8eLfd5LkA7YQT9B .active1,#mermaid-svg-F8eLfd5LkA7YQT9B .active2,#mermaid-svg-F8eLfd5LkA7YQT9B .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-F8eLfd5LkA7YQT9B .activeText0,#mermaid-svg-F8eLfd5LkA7YQT9B .activeText1,#mermaid-svg-F8eLfd5LkA7YQT9B .activeText2,#mermaid-svg-F8eLfd5LkA7YQT9B .activeText3{fill:#000 !important}#mermaid-svg-F8eLfd5LkA7YQT9B .done0,#mermaid-svg-F8eLfd5LkA7YQT9B .done1,#mermaid-svg-F8eLfd5LkA7YQT9B .done2,#mermaid-svg-F8eLfd5LkA7YQT9B .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-F8eLfd5LkA7YQT9B .doneText0,#mermaid-svg-F8eLfd5LkA7YQT9B .doneText1,#mermaid-svg-F8eLfd5LkA7YQT9B .doneText2,#mermaid-svg-F8eLfd5LkA7YQT9B .doneText3{fill:#000 !important}#mermaid-svg-F8eLfd5LkA7YQT9B .crit0,#mermaid-svg-F8eLfd5LkA7YQT9B .crit1,#mermaid-svg-F8eLfd5LkA7YQT9B .crit2,#mermaid-svg-F8eLfd5LkA7YQT9B .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-F8eLfd5LkA7YQT9B .activeCrit0,#mermaid-svg-F8eLfd5LkA7YQT9B .activeCrit1,#mermaid-svg-F8eLfd5LkA7YQT9B .activeCrit2,#mermaid-svg-F8eLfd5LkA7YQT9B .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-F8eLfd5LkA7YQT9B .doneCrit0,#mermaid-svg-F8eLfd5LkA7YQT9B .doneCrit1,#mermaid-svg-F8eLfd5LkA7YQT9B .doneCrit2,#mermaid-svg-F8eLfd5LkA7YQT9B .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-F8eLfd5LkA7YQT9B .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-F8eLfd5LkA7YQT9B .milestoneText{font-style:italic}#mermaid-svg-F8eLfd5LkA7YQT9B .doneCritText0,#mermaid-svg-F8eLfd5LkA7YQT9B .doneCritText1,#mermaid-svg-F8eLfd5LkA7YQT9B .doneCritText2,#mermaid-svg-F8eLfd5LkA7YQT9B .doneCritText3{fill:#000 !important}#mermaid-svg-F8eLfd5LkA7YQT9B .activeCritText0,#mermaid-svg-F8eLfd5LkA7YQT9B .activeCritText1,#mermaid-svg-F8eLfd5LkA7YQT9B .activeCritText2,#mermaid-svg-F8eLfd5LkA7YQT9B .activeCritText3{fill:#000 !important}#mermaid-svg-F8eLfd5LkA7YQT9B .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-F8eLfd5LkA7YQT9B g.classGroup text .title{font-weight:bolder}#mermaid-svg-F8eLfd5LkA7YQT9B g.clickable{cursor:pointer}#mermaid-svg-F8eLfd5LkA7YQT9B g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-F8eLfd5LkA7YQT9B g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-F8eLfd5LkA7YQT9B .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-F8eLfd5LkA7YQT9B .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-F8eLfd5LkA7YQT9B .dashed-line{stroke-dasharray:3}#mermaid-svg-F8eLfd5LkA7YQT9B #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B .commit-id,#mermaid-svg-F8eLfd5LkA7YQT9B .commit-msg,#mermaid-svg-F8eLfd5LkA7YQT9B .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-F8eLfd5LkA7YQT9B g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-F8eLfd5LkA7YQT9B g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-F8eLfd5LkA7YQT9B g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-F8eLfd5LkA7YQT9B .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-F8eLfd5LkA7YQT9B .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-F8eLfd5LkA7YQT9B .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-F8eLfd5LkA7YQT9B .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-F8eLfd5LkA7YQT9B .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-F8eLfd5LkA7YQT9B .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-F8eLfd5LkA7YQT9B .edgeLabel text{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-F8eLfd5LkA7YQT9B .node circle.state-start{fill:black;stroke:black}#mermaid-svg-F8eLfd5LkA7YQT9B .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-F8eLfd5LkA7YQT9B #statediagram-barbEnd{fill:#9370db}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-state .divider{stroke:#9370db}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-F8eLfd5LkA7YQT9B .note-edge{stroke-dasharray:5}#mermaid-svg-F8eLfd5LkA7YQT9B .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-F8eLfd5LkA7YQT9B .error-icon{fill:#522}#mermaid-svg-F8eLfd5LkA7YQT9B .error-text{fill:#522;stroke:#522}#mermaid-svg-F8eLfd5LkA7YQT9B .edge-thickness-normal{stroke-width:2px}#mermaid-svg-F8eLfd5LkA7YQT9B .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-F8eLfd5LkA7YQT9B .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-F8eLfd5LkA7YQT9B .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-F8eLfd5LkA7YQT9B .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-F8eLfd5LkA7YQT9B .marker{fill:#333}#mermaid-svg-F8eLfd5LkA7YQT9B .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-F8eLfd5LkA7YQT9B {color: rgba(0, 0, 0, 0.75);font: ;}
FT
0-2piN点
等间隔采样
IDFT
周期延拓
DFS
主值序列
ZT
单位圆上N点
等间隔采样
x(n)
X(e^jw)
X(k)
X(n)N
x~n
X~k
X(z)
如何从x(n)N推导出x(n)呢?下面直接给出结论:
xN(n)=x(n)~RN(n)=[∑i=−∞∞x(n+iN)]RN(n)x_N(n)=\widetilde{x(n)}R_N(n)\\ =\Big[\sum_{i=-\infin}^{\infin}x(n+iN)\Big]R_N(n) xN(n)=x(n)RN(n)=[i=−∞∑∞x(n+iN)]RN(n)
如果序列x(n)x(n)x(n)的长度为M,则只有当频域采样点数N≥MN{\ge}MN≥M时,才有:
xN(n)=IDFT[X(k)]=x(n)x_N(n)=IDFT\Big[X(k)\Big]=x(n) xN(n)=IDFT[X(k)]=x(n)
即可由频域采样值X(k)X(k)X(k)恢复出原序列x(n)x(n)x(n),否则产生时域混叠现象。
如何由X(k)X(k)X(k)恢复X(z)X(z)X(z)和X(ejω)X(e^{j\omega})X(ejω)
结论如下,省略推导:
X(z)=∑k=0N−1X(k)1N1−z−N1−WN−kz−1=∑k=0N−1X(k)ϕk(z)X(z)=\sum_{k=0}^{N-1}X(k)\frac{1}{N}\frac{1-z^{-N}}{1-W_N^{-k}z^{-1}}\\ =\sum_{k=0}^{N-1}X(k){\phi}_k(z)\\ X(z)=k=0∑N−1X(k)N11−WN−kz−11−z−N=k=0∑N−1X(k)ϕk(z)
将z=ejωz=e^{j\omega}z=ejω带入上式得:
X(ejω)=∑k=0N−1X(k)ϕ(ω−2πNk)ϕ(ω)=1Nsin(ωN/2)sin(ω/2)e−jω(N−12)X(e^{j\omega})=\sum_{k=0}^{N-1}X(k){\phi}({\omega}-\frac{2\pi}{N}k)\\ {\phi}(\omega)=\frac{1}{N}\frac{sin({\omega}N/2)}{\sin({\omega}/2)}e^{-j{\omega}(\frac{N-1}{2})} X(ejω)=k=0∑N−1X(k)ϕ(ω−N2πk)ϕ(ω)=N1sin(ω/2)sin(ωN/2)e−jω(2N−1)
上式中X(z)X(z)X(z)表示内插公式,ϕk(z)\phi_k(z)ϕk(z)称为内插函数。
用DFT对信号进行频谱分析
对连续信号进行频谱分析
Xa(kF)=TX(k)=T⋅DFT[x(n)N]k=0,1,...,N−1X_a(kF)=TX(k)=T{\cdot}DFT[x(n)_N]{\quad}k=0,1,...,N-1 Xa(kF)=TX(k)=T⋅DFT[x(n)N]k=0,1,...,N−1
上式表明,可以通过对连续信号采样并进行DFTDFTDFT再乘TTT,近似得到模拟信号频谱的周期延拓函数在第一个周期[0,Fs]\Big[0,F_s\Big][0,Fs]上的N点等间隔采样Xa(kF)X_a(kF)Xa(kF)。
TpT_pTp和N可以按照下面两式进行选择:
{N>2fcFTp>1F\begin{cases} N > \frac{2f_c}{F}\\ T_p > \frac{1}{F} \end{cases} {N>F2fcTp>F1
fcf_cfc是信号最高频率,FFF是谱分辨率,TpT_pTp是信号持续时间。
对序列进行频谱分析
略
误差分析
混叠现象
采样速率必须满足采样定理,否则会在ω=π\omega=\piω=π(对应模拟频率f=Fs/2f=F_s/2f=Fs/2)附近发生频谱混叠现象。一般在采样前进行预滤波,滤除高于折叠频率Fs/2F_s/2Fs/2的频率成分,以免发生频谱混叠现象。
栅栏效应
N点DFT是在频率区间[0,2π][0,2\pi][0,2π]上对时域离散信号的频谱进行N点等间隔采样,而采样点之间的频谱是看不到的。对有限长序列,可以在原序列尾部补零;对无限长序列,可以增大截取长度及DFT变换区间长度,从而使频域采样间隔变小,增加频域采样点数和采样点位置,使原来漏掉的某些频谱成分被检测出来。
截断效应
实际中遇到的x(n)x(n)x(n)可能是无限长的,用DFT对其进行频谱分析时,必须将其截短,形成有限长序列y(n)=x(n)w(n)y(n)=x(n)w(n)y(n)=x(n)w(n),w(n)w(n)w(n)称为窗函数,长度为N。
数字信号处理-基础一相关推荐
- 数字信号处理基础----FM的调制与解调
1. FM调制与解调的数学原理 1.1 FM调制中的常用指标 FM是模拟调制中的一种,也就是频率调制.就是把基带信号用载波的频率来承载.直接的表现方式是调角,也是一种非线性调制. 角度调制时, ...
- (4)FPGA面试技能提升篇(数字信号处理基础)
1.1 FPGA面试技能提升篇4(数字信号处理基础) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试技能提升篇4(数字信号处理基础): 5)结束语. 1.1 ...
- 数字信号处理基础----FM的调制与解调(1)
1. FM调制与解调的数学原理 1.1 FM调制中的常用指标 FM是模拟调制中的一种,也就是频率调制.就是把基带信号用载波的频率来承载.直接的表现方式是调角,也是一种非线性调制. 角度调制时, ...
- matlab数字信号处理实验报告,数字信号处理实验报告(Matlab与数字信号处理基础).doc...
西华大学实验报告(理工类) 开课学院及实验室:电气信息学院 6A-205实验时间 :年月日学 生 姓 名学号成 绩学生所在学院电气信息学院年级/专业/班课 程 名 称数字信号处理课 程 代 码实验项目 ...
- MATLAB数字信号处理基础
MATLAB数字信号处理基础 1.波形产生函数 函数 说明 square 方波 sawtooth 锯齿波 sinc sinc函数 diric diric函数 rectpuls 非周期方波 tripul ...
- 数字信号处理基础----xilinx除法器IP使用
前言 在进行数字信号处理的时候,计算是必不可少的,通常情况下,能够不用乘法器和除法器就不用乘除法器,可以采用移位和加减法的方式来完成计算.但在一些特殊情况下,希望采用乘除法,这时候在FPGA当中就需要 ...
- 数字信号处理基础知识00
数字信号处理 Digital Signal Processing 离散时间信号与系统分析 Z变换 离散傅立叶变换(DFT) 快速傅立叶变换(FFT) 离散时间系统的结构 IIR滤波器的设计 FIR滤波 ...
- matlab如何进行数字信号处理,数字信号处理基础及MATLAB实现(第2版)
[内容简介] 本书系统地介绍了数字信号处理基本理论.设计方法和实现等方面的内容.全书共分9章,第1章介绍数字信号处理的研究对象.学科概貌.系统基本组成.特点.发展及应用等内容:第2章介绍离散时间信号与 ...
- 数字信号处理基础----快速傅里叶变换
1 旋转矢量 在前面曾多次提到了旋转矢量,也就是在单位圆上旋转的一个复指数信号.旋转的方向为逆时针,旋转的角速度Ω=2π/N,N为旋转矢量的周期. 现在若使旋转的方向相反,则可以得到顺时针旋转 ...
- 数字信号处理基础总结--7.28
第一章 离散时间信号与系统 1.我们实际用的信号,一般都是实信号,理论研究可能用到复信号. 2.x(n-m),m为正,表示延时m位.右移. 3.matlab 卷积函数conv,单位阶跃序列的后向差分就 ...
最新文章
- com+ 三层布署[未成功验证]
- php文件锁 阻塞区别,php文件锁阻塞模式和非阻塞模式
- mysql 建表覆盖原先表_mysql表与表之间建关系
- robocode java_IBM Robocode Java学习利器(1)Robocode 入门
- SolidWorks修改工程图中文字字体的方法
- android 数据线有几种,安卓数据线有几种
- 云计算 IaaS PaaS SaaS 基础概念和区别终于搞清楚了
- win10 系统锁屏壁纸的目录
- WIN10解包分区和磁盘分区教程
- 使用@media screen解决分web不同分辨率问题
- js统一社会信用代码正则验证
- 基于汇编语言的文本对比算法
- 西电计算机学院有保研清华的吗,2021届清华录取保研学生3520余人,本校学生约一半,西电实力强大...
- 角度制与弧度制的相互转换np.deg2radnp.rad2deg
- 【线段树】L - GTY‘s gay friends
- 百度地图绘画行政区域
- 微信敏感词都有什么?
- C++之string类型详解
- hypermill后处理构造器安装_NX后处理直白易操作教程
- 两列模糊对比 oracle,excel 模糊比对两列数据并将比对结果显示出来 | excel表格两列数据模糊对比...
热门文章
- 1407 :上三角矩阵的判断(c语言)
- [论文阅读] 激光点云分割-RPVNet
- matlab2010反复激活
- Windows终端配置emoji
- 计算几何之计算三角形的外接圆(三维)
- java面试填空题 jsp_JSP面试题及答案
- Python数学建模系列(九):回归
- latex教程 / 矢量图转换 / 文献引用bibitem
- DH算法 | Diffie-Hellman 密钥交换
- 如何看oracle 删除完全,怎么查看以前Oracle卸载干净没?