信号与系统上半¶
写在前面¶
本笔记基于胡浩基老师发布在B站的《2022浙江大学信号与系统(含配套课件和代码) - 胡浩基老师》,胡浩基老师2026春夏学期《信号与系统》(4学分),王贤迪老师2026春夏学期《生物医学信号处理》整理而来。
生物医学信号处理更侧重离散信号处理,DFS和z变换是重点,对于变换的性质考察不深,不考调制。而4学分信号与系统更侧重连续信号,DFS不考,对于性质的考察更多。不过无论对哪个课来说采样都是重点。
这篇笔记对于信号与系统课程进行了较为完整的整理,既可以作为初学者参考,也可以直接作为期末复习资料。对于学习《生物医学信号处理》的同学来说,这篇笔记也可以提供很多信号与系统的基础知识。我认为学《生物医学信号处理》之前应当先学信号与系统的,因为我学过信号与系统再去学《生物医学信号处理》都感觉吃力,没有学过信号与系统的同学可能面临更大的挑战。
分为上半和下半。上半是基础介绍、卷积、CTFT、DTFT,下半是DFS、采样、拉普拉斯变换、z变换。
二次整理过后如果打算分发(如发布在CC98等),请先告知CC98@skyeye2024,谢谢。该笔记目前只发布在个人网站,严禁未经允许用于任何盈利用途。
工程上把虚数单位 i 写成 j
这里把模拟角频率用ω表示。胡浩基老师授课的信号与系统仍然用ω表达数字角频率,通过\(e^{j\omega}\)来和模拟角频率区分,而王贤迪老师授课的生物医学信号处理用Ω表达数字角频率,和一些教材不同。
CTFT频谱写为X(jω)和X(ω)是一个意思,自变量都是ω。DTFT频谱写为\(X(e^{j\omega})\)或\(X(e^{j\Omega})\),自变量是数字角频率,无论是ω还是Ω
pi就是圆周率π,a^n的"^"是幂的意思,f_s的" _ " 是下标的意思
认识信号¶
我们用x(t)表达连续时间信号,自变量是时间t,可以简单理解为初高中学的那种函数(曲线),比如x(t)=t+1。用x[n]表达离散时间信号,自变量n你可以把它说成时间也可以看成下标,它更像是数列,或者python里的数组,所以也可以说成序列。你可以用x[n]=n+1来描述这个离散时间信号,它只在n为整数的地方有值。
我后面就简称为连续信号和离散信号
离散信号¶
介绍两个常用的离散信号(序列)

用这两个序列可以表示各种序列,其实光用δ[n]就够了,因为它是最小的单位。这里要知道可以移动信号,比如δ[n-1]就是在n=1的位置δ[n-1]=1,其余为0,这个高中学过函数变换应该很熟,左加右减,只不过离散的只能移动整数值。另外还可以对信号做乘法,比如2δ[n]是n=0的地方δ[n]=2。有了这两个处理方法,你就可以用δ[n]组合出任何x[n]。
用δ[n]表示u[n],u[n]左边全是0不用放,0处的值是1,所以放一个δ[n],1处的值是1,所以放一个δ[n-1],2处的值是1,所以放一个δ[n-2],以此类推这么下去,所以u[n]就用δ[n]完全表达出来了,u[n]=δ[n]+δ[n-1]+δ[n-2]+...,如果用求和符号来化简,可以写成\(\sum\limits_{i=0}^{+\infty}\delta[n-i]\)。所以你看离散信号的表示一点都不难,就是一个一个放上去。
再比如,如果是0,1,2处的值为1,其余为0,则可以表示为δ[n]+δ[n-1]+δ[n-2],除此以外也可以表示为u[n]-u[n-3],为什么呢。因为u[n]是从0往右均为1,u[n-3]是从3往右均为1,那大于等于3的那些地方,都是1-1=0了,只剩下0,1,2处的值,这样就可以对离散信号进行表示。在这门课的实际学习中,其实就是要你把各种各样的信号用基础的信号来表示。
举一个例子
对于这个信号,怎么用δ[n]或者u[n]表示呢?如果是δ[n],还是用之前一个一个放的思路,n<0的部分都放-1,n>0的地方都放1,所以就是(-δ[n+1]-δ[n+2]-δ[n+3]+...)+(δ[n-1]+δ[n-2]+δ[n-3]+...)。那么用u[n]怎么表达呢?这里需要引入一个新的序列,就是x[n]=1。注意这和高中学的常函数不一样,这个1并不是处处有值,而是说这个序列每一项都是1,这一点非常重要。利用这个序列可以把sgn[n]表示为-1+2u[n]-δ[n],务必注意0那个地方在定义里是0,如果不把这个δ[n]减掉,0那个地方就成了1,就和我们要求的不一样了。
已经比较熟练地使用“放置”的思路之后,就可以理解下面这个公式了
先别急,其实思路和我们前面讲到的一个个放上去是一样的。等式右边其实是把原来作为一整个序列的x[n],拆分成了一个一个只在n=k有值的孤立的δ[n-k],然后用x[k]这个数来作为系数给δ[n-k]做数乘,把它变成原来那一项的高度,全部组合起来,就成了原来的x[n]

仔细看看,如果把k一个一个带入,是不是就是得到了这样的结果。
这个表达式实际上就是x[n]卷积δ[n],后面会讲,现在你就知道x[n]卷积δ[n]=x[n]了
讲了这个之后还要提一下δ[n]的筛选性质,就是\(x[n]\delta[n-n_0]=x[n_0]\delta[n-n_0]\),这很好理解,因为δ[n-n0]除了n0那个点之外都是0,那其他就都没了,和只有x[n0]和它相乘是一样的效果。
前面提到了信号的两种变换方式,时移和数乘,其实还有其他的变换方式比如写成x[-n],x[2n],组合起来可以变成x[-3n+6]这样。一种常见的考法就是给你x[n]要你求x[-3n+6]这样。第一种方法是看下标,新的序列y[n]=x[-3n+6]在n=1处是x[3]的值,而n=2处是x[0]的值,一项一项带进去,这在序列有限,比较少的时候这么做比较方便。但是如果序列比较长的话,还是需要掌握第二种方法。第二种就是用函数变换时的那种思路,x[-n]想成关于n=0轴对称翻转,而x[3n]这里和连续的不太一样,不是简单伸缩了,而是把一些值给剃掉了,比如x[3n]在n=0是x[0],在n=1是x[3],相当于把1和2处的值给去掉了,然后把剩下的按顺序组成新的序列(0处位置不变)。那么x[-3n+6]就可以理解为x[n]先关于n=0对称得到x[-n],然后把不能被3整除的项都去掉重新组成序列x[-3n],然后再把这个序列往右移动2个单位,变成x[-3(n-2)]=x[-3n+6]。这里确实对于高中数学函数变换有一定要求,这里也没法展开太多,有需要的自己找一数补课:相关视频
介绍一下三角函数和e指数产生的离散时间信号,比如\(x[n]=\sin(\omega_0 n)\),我们知道如果是连续的那么是有周期性的,最小正周期是\(2\pi/|\omega_0|\),但是在离散的这里如果\(2\pi/|\omega_0|\)不是有理数,那么它就不具有周期性,因为你找不到一个整数T使得\(\sin(\omega_0n)=\sin(\omega_0(n+T))\)。如果\(2\pi/|\omega_0|\)可以写成p/q这样的既约分数的形式(也就是除了1之外没有可以约的了),那么它的最小正周期就是p。比如说对于\(\sin(4\pi n)\),\(2\pi/4\pi=1/2\),那么最小正周期就是1,对于\(\sin(\dfrac \pi 4 n)\),\(2\pi/\frac \pi 4=8\),所以最小正周期是8。如果把\(\sin(\omega_0 n)\)改成\(\cos(\omega_0 n)\)或者\(e^{j\omega_0n}\),结论一样,有没有周期性以及最小正周期的计算方法相同。
关于周期性还有一点要说的,就是两个序列\(x_1[n]\)和\(x_2[n]\)各有周期T1,T2(T1≠T2),则他们两个线性运算过后的函数如果要判断有没有周期性,就看T1/T2是否是有理数。如果是有理数,则最小正周期是T1和T2的最小公倍数。如果是无理数,则没有周期性。
我建议要对这种离散的正弦序列有一个直观的认识,不要把它和连续的正弦波搞混,一个是离散的一个是连续的。

注意\(\cos(\pi n)=(-1)^n\),有些时候会用-1的n次方来迷惑你,其实可以写成cos的形式
连续信号¶
这里介绍信号与系统里定义的基本连续信号
δ(t)是单位冲激信号,难以通过表达式来描述,只能通过它的性质来了解它的用法。它并不是常规的函数,如果真的要画图,那么它就是在0那个地方冲到无穷大再回到0,除此以外别的地方都没有值了。而单位冲激信号的“单位”就体现在对它从负无穷到正无穷积分为1。在图上用一个箭头表示,并标出它的大小(比如这里积分的值为1就写个1)

δ(t)有很多种定义的方式,通常教学中采用的是Δ趋于0逼近的方法

这三者中的任意一者当Δ趋于0之后得到的都是冲激信号δ(t),δ(t)的定义有多样性。你可能会说不对啊第一个不是偶函数,没有负的部分。这里就要引入函数相等的概念
在过去教的是两个函数定义域相同,且定义域上每一处的函数值都相同,这样两个函数才相等。但是这样的定义太严格了,更松的定义是下面这样
这个更松的定义允许两个函数有可数个点上的值不同,而对于上面三个Δ相关的函数来说,令Δ趋于0,代入这个判别条件之后得到的结果确实是一样的,都是y(0),具体的积分证明这里不展开,课程也不要求,但需要记住的是δ(t)的性质就是积分之后只留下那个点处的值,这可以说是δ(t)最本质的性质,称为筛选性质。
还有一种对δ(t)的定义是这样的
这个怎么证明也是超纲的,这里不展开,但是胡浩基老师的课讲到了这一点,仅作了解。
还有一种对δ(t)的定义是对u(t)求导,这里需要补充单位阶跃信号u(t)。其实离散那里介绍了u[n]之后u(t)长什么样也比较好猜

0处是一个跳变的间断点,0处的值其实是任意的,根据前面提到的拓展的函数相等的定义,0处取任意值都可以,我们不研究这个。当你对u(t)求导,很明显0那个位置的导数会变成无穷,而除此以外其他地方导数都为0。如果学过模电可能知道单位阶跃响应的导数是单位冲激响应,这和单位阶跃信号求导是单位冲激信号其实是相通的,后面会介绍。
当然连续信号也有常函数x(t)=1,就是一根横线了。还有三角函数,这就很熟悉了。三角函数的周期没有离散的那么多约束,\(x(t)=\sin(\omega_0 t)\)的周期就是\(2\pi/\omega_0\),如果角频率为ω1和ω2的三角函数相加,也要满足ω1/ω2是有理数才是周期的。
用连续信号u(t)表示各种方形的信号就很容易了,对于符号函数sgn(t),可以写为2u(t)-1或者u(t)-u(-t)

符号函数在0处也是不定义的,这和离散的情况不同,所以它表达式也和离散的那个有一些差异。
还有一个重要的连续信号,Sa(t),抽样信号

它的图象就是一个峰值逐渐减小的正弦曲线,因为它以1/t 为包络线。除此以外可以用sin(t) 上某点到原点的斜率来理解它,显然极值就在这条线相切的地方,而不是sin(t)达到极值时的位置(除了t = 0)。它的零 点也就是分子为0 的点。另外它是一个偶函数,因为sin(t)和t 都是奇函数,奇函数相除得到偶函数。
这个东西和方波构成变换对,常用作低通滤波器(保留低频信号,抑制高频信号的一个系统),后面会介绍这是什么意思。
它有以下积分性质
系统的性质¶
系统是接受输入信号然后发出输出信号的东西,你把x(t)送进去,就得到了y(t)。注意这里的x和y不是自变量,而是代表输入和输出信号。有些时候这两个信号存在一些关系,比如y(t)=2x(t),还是要注意和初高中的函数区分开,x和y并不是一个数,而是说我任意地扔进去一个信号,它还给我的信号具备每一项都变成原来的两倍的特征。比如说我扔进去u(t),还给我2u(t)。
输入信号x也称激励,输出信号y也称响应。
信号与系统这门课研究线性时不变(linear time-invariant,或简写为LTI)系统,什么意思后面会解释。不是所有的系统都是LTI系统,所以我们需要认识系统的性质并判断
后面的很多东西,比如系统的性质,对于离散和连续是共通的,为了节省就只写连续的情况,离散的情况只需要把所有x(t)替换成x[n]即可
我们定义系统的一些性质
线性性¶
说一个系统是线性系统(或说它具有线性性)意味着满足齐次性和叠加性。
- x(t)→y(t),则ax(t)→ay(t)(齐次性homogeneous property)
- x1(t)→y1(t),x2(t)→y2(t),则x1(t)+x2(t)→y1(t)+y2(t)(叠加性additive property)
或者直接写为ax1(t)+bx2(t)→ay1(t)+by2(t)
线性系统的判据为:①每一项都有x②每一项的x都是一次
比如y(t)=x(t)+1就不是线性系统,当输入改成ax(t),输出变成ax(t)+1,这和a(x(t)+1)不总是相同
根据是否满足齐次性和是否满足叠加性可以把系统划分为四个类型。线性系统好举例,比如y(t)=kx(t),这种既满足齐次性也满足叠加性。而满足齐次性不满足叠加性的需要稍微构造一下,比如\(y(t)=\dfrac {x^2(t)}{x'(t)}\)。不满足齐次性也不满足叠加性的也比较容易,比如y(t)=x(t)+1。在实函数部分难以找到满足叠加性却不满足齐次性的系统,复函数有,比如y(t)=Re(x(t)),当a=j的时候不满足,可以自己验证一下。那么结论就是,判断一个系统是否是线性系统时先看叠加性,如果不满足那就判断它不满足线性性,如果满足的话就认为它满足线性性,就这样就行,应付考试范围的应该够了。
e^x(t)不是线性系统,因为它可以展开成1+x+...,这里有1这一项不包含x,而且后面的项也不是一次
时变/时不变¶
非时变系统的特征:
对于x(t)→y(t),有x(t-t0)→y(t-t0)
一种是把括号里的东西作为一个整体减去t0(即把x(t)替换为x(t-t0)),另一种变换是把t替换为t-t0,你就看这两种变换的表达式是否一样,如果一样就是时不变,如果不一样就是时变
你看y(t)=x(2t),输入的是x(t)得到y(t)=x(2t),如果你换成输入x(t-t0),那么得到y(t)=x(2t-t0),是把x括号里的东西整体减去t0。而把t替换为t-t0也就是y(t-t0),表达式是x(2(t-t0))=x(2t-2t0),这和之前那个不一样,所以是时变系统。
x(t)→y(t)=x(3-t)是时变系统,因为当x1(t)=x(t-t0),x1(t)→x(3-t-t0),而y(t-t0)=x(3-(t-t0))=x(3-t+t0),和x1(t)映射结果不同,因此这是时变系统
x(t)→y(t)=tx(t)是时变系统,x1(t)=x(t-t0)→tx1(t)=tx(t-t0), y(t-t0)=(t-t0)x(t-t0)
x(t)→y(t)=x(t-1)是时不变系统,x1(t-t0)→x(t-1-t0),y(t-t0)=x(t-t0-1)
写成符号就是y(t)=x(g(t))的时候,x1(t)=x(t-t0)→x(g(t)-t0),y(t-t0)=x(g(t-t0))
非时变系统的判据为:①t只在x括号内②x括号里的t只能以t+c的形式出现,c是常数,不能以-t, 2t, e^t等其他形式出现
记忆,因果,稳定,可逆¶
无记忆系统意味着只通过x(t)或x[n]来得到y(t),y[n],不能出现其他(过去或将来的信号)。无记忆系统一定是因果系统
因果系统是y(t)或y[n]只依赖过去或现在的x,不能出现将来的x,比如x(t+1)。非因果系统无法在物理上实现,这里的实现指的是那种实时处理,毕竟你无法得到未来发生的数据,但如果你说全部保存下来再处理的话,那种是可以的
有记忆系统不一定是因果系统,因为有记忆系统可能用到过去的信号,也可以用到将来的信号。
稳定系统就是输入有界则输出有界
如果任何两个不同的x信号经过系统的y响应都不一样,那么这个系统就是可逆系统。

| 系统表达式 | 记忆 | 因果 | 线性 | 时不变 | 稳定 | 可逆 |
|---|---|---|---|---|---|---|
| y(t)=\(e^{x(t)}\) | × | √ | × | √ | √ | √ |
| y[n]=x[n]x[n-1] | √ | √ | × | √ | √ | × |
| y(t)=\(\frac {dx}{dt}\) | √ | 有争议 | √ | √ | × | × |
| y[n]=x[n−2]−x[n+1] | √ | × | √ | √ | √ | × |
| y(t)=sin(4t)x(t) | × | √ | √ | × | √ | 有争议 |
| y[n]=x[4n] | √ | × | √ | × | √ | × |
| y[n]=x[n-2]+x[2-n] | √ | × | √ | × | √ | × |
| y(t)=\(\int_{-\infty}^{2t}x(\tau)d\tau\) | √ | × | √ | × | × | √ |
| y(t)=x(t/3) | √ | × | √ | × | √ | √ |
| y[n]=\(\begin{cases}x[n], n>0\\ 0, n=0\\ -x[n], n<0 \end{cases}\) | × | √ | √ | × | √ | × |
说一下有争议的,dx/dt这个求导,根据微积分里的表达式,它可以用到t-和t+的信号,但是如果本来有导数,那么x(0)-x(0-)也能把x'(0)求出来,不一定要用到0+的值,所以这个有争议,也不会考这个
sin(4t)x(t)那个的争议点在于,当sin为0的时候,无法通过y来求出x。但是如果用那个推广的函数相等的定义,就算x去掉那些无法被确定的点得到的也是同一个x,所以这个有争议,不会这样考。
积分的那个我说一下
第一种是把t换成t-t0,就是\(\int_{-\infty}^{2(t-t_0)}x(\tau)d\tau\)
第二种是把x括号里的东西作为整体减去t0,就是\(\int_{-\infty}^{2t}x(\tau-t_0)d\tau\),这个用变量代换,令τ-t0=λ,就变成\(\int_{-\infty}^{2t-t_0}x(\lambda)d\lambda\),积分限和上面的不一样,所以整体也不一样,是时变的。
介绍一下系统的串联和并联
串联就是x(t)经过一个系统得到z(t),然后把z(t)作为第二个系统的输入得到y(t),那么这样就叫串联
并联就是x(t)经过一个系统得到y1(t),同时x(t)也被送入第二个系统得到y2(t),那么y1(t)+y2(t)作为最终的输出就意味着两个系统并联了
两个LTI系统的串联仍然是线性系统,两个LTI系统的并联仍然是线性系统。比如由于一阶导是LTI的,所以高阶导数也是LTI的。
LTI系统¶
LTI系统,即线性(linear)时不变(time-invariant)系统,满足线性系统和时不变系统的要求,是最简单的一种系统,简单到我只要知道一个非零x(t)对应的y(t),那么就可以直接得到任何x(t)对应的y(t)
研究的时候,把δ[n]称为单位冲激序列,把δ[n]对应的输出h[n]称为单位冲激响应。注意h[n]是零状态响应,不考虑初始储能。除此以外单位阶跃响应也是零状态响应
对于任意x[n],进行同一个LTI的时候,得到的结果可以用x[n]\(\ast\)h[n]表示,这个“\(\ast\)”是(线性)卷积,后面介绍卷积
h[n]是LTI系统的唯一标识,如果两个LTI系统的h[n]一样,那么它们就是一样的,但是如果不是LTI系统,那么就不能这么说,非LTI系统连h[n]的概念都没有,因为δ[n]在不同时候输入得到的结果都可能是不一样的。
直观理解卷积¶
在这里理解卷积是很直观的,对于单位脉冲序列产生的单位脉冲响应,如果移动单位脉冲序列,比如从δ[n]变成δ[n-1],那么得到的响应就是h[n-1]。如果数乘δ[n],输入aδ[n],那么得到的结果就是ah[n]
任意的x[n],都可以用经过平移和数乘后的δ[n]的和来表示,于是任意x[n]的输出,也就可以用相应平移和数乘后的h[n]的和来表示。如果用一个数组表示h[n],比如(1, 2, 3, 4),那么对于输入为u[n]来说,就相当于(1, 2, 3, 4, 0...)+(0, 1, 2, 3, 4, 0...)+(0, 0, 1, 2, 3, 4, 0...),括号最左侧的数字对应下标0
有个卷积公式,\(x[n]\ast h[n]=\sum_{k=-\infty}^{+\infty}x[k]h[n-k]\),也就是平时经常看到的积分的那个对于连续而言的卷积公式的样子,这里是对于离散的。
要证明这个,首先要证明\(x[n]=\sum_{k=-\infty}^{+\infty}x[k]\delta[n-k](其实也就是x[n]\ast \delta[n]=x[n])\)
这个其实是显然的,n-k其实就是把δ[n]右移k位,到达x[k]本来应该在的那个位置,然后再乘了x[k]的倍数。前面离散信号部分也讲过
得到这个之后再结合线性时不变的特征,就能直接得到那个卷积公式了,把δ换成h就行
所以如果是原本的卷积公式,算法就跟之前一样,就是位移,数乘,叠加
然后还可以改变一下卷积公式的形式,用另一种方式可视化
\(x[n]\ast h[n]=\sum_{k=-\infty}^{+\infty}x[k]h[n-k]=\sum_{k=-\infty}^{+\infty}x[k]h[-(k-n)]\)
第一种形式可以解读为,求出k固定的时候n的样子再叠加,每一个经过位移和数乘的序列,就是k固定时的样子。而第二种形式可以解读为,求出n固定的时候所有x[k]h[-(k-n)]的结果然后加起来。要直观表现就是把h的序列翻转过来(因为有符号),然后想求卷积后y的第n项,就看翻转过来的h移动n位之后的,和x[k]的序列分别相乘相加得到的值。

注意是h[n]反转,然后被平移的也是h[n]
对于有限长度的序列的卷积,用列表法比较容易

就按副对角线求和就行
本来就是一样的东西,我觉得用哪个来想都很快。可以参考3B1B讲卷积的视频
3B1B那个是从X+Y为一个固定值的视角来看卷积的,但我认为要理解卷积必须要讲LTI系统。位移,数乘,叠加是卷积的本质。
对于连续信号,如果能得到矩形的响应,就可以通过把模拟信号用矩形来近似,从而近似出响应,取的方波越小近似就越精确
要定义一个\(\delta_\Delta(t)\),宽度是Δ,高度是1/Δ,当Δ→0时就是冲激函数δ(t)
然后有\(x_\Delta(t)=\sum_{k=-\infty}^{+\infty}x(k\Delta x)\delta_\Delta(t-k\Delta)\cdot \Delta\)
举例说明,比如对于k=0处,由于\(\delta_\Delta(t) \cdot \Delta\)相当于高度为1宽度为Δ的矩形,所以再乘个x(0)就是图里的形状了,注意这个表达式并不是表示面积而是表达这个矩形

另外认为当Δ→0,\(x_Δ(t)=x(t)\),其实也就是\(x(t)\ast \delta(t)=x(t)\)

这部分就是证明x(t)→\(x(t)\ast h(t)\)

务必注意用以下判据来做的时候必须先判断是否是LTI系统,比如y(t)=tx(t)这种就不能用这种来判断,输入有限,输出有限才是判断稳定的根本,当x有限的时候,t拉到无穷大,那y也就无穷大了
δ(t)的性质¶
δ(t)最本质的定义是筛选性质,即\(\int_{-\infty}^{+\infty}f(t)\delta(t)=f(0)\),要求f(t)不是奇异函数。
证明\(\delta(at)=\frac 1 {|a|}\delta(t)\)也要用到广义函数相等的定义以及筛选性质,演示a>0的证明,当a<0的时候多一个负号,因为如果变量替换u=at(a<0)的话,积分限会反过来,形式就不一样,所以需要多凑一个负号。
务必注意对于冲激函数做尺度变换,它的“面积”并不是不变的。比如你用δ(2t),看起来宽度是被压窄了,但是它的高度也相应等倍数变小了,并不是保持“面积”不变
所以和直观的f(2t)导致压缩的直觉相反,δ(t)的高度并不会变成原来的两倍,而是变成原来的½。如果要用函数变换求变换后的位置,那其实只要确定它的位置和高度即可,位置可以直接变换得到,而高度变成1/|a|


连续时间卷积的计算¶
连续函数的卷积公式
求\(e^{-bt}u(t)\ast e^{-at}u(t)\)

直接用卷积公式算过程就是这样。我一开始做的时候对于u(τ)和u(t-τ)感觉无从下手,后面看了才知道只需要分类讨论就行,它只能取1和0。最终积分出来是一个关于t的函数,可以用u(t)这样来简化表达式,不用写分段了
下面这种简单函数化成面积更好算,我借这个题说明了卷积的卷(反转)和积(相乘)是怎么体现的,从连续函数的角度来说

除非被卷积的两个函数中有冲激函数,否则结果一定是连续的函数
用这种反转再积分的思路很容易能推导出来这样的结论

来一道考试难度的题目

其实这种方波的,只需要算出关键点的位置就行,肯定是用直线连起来的,不用把表达式写出来。
来一道麻烦一点的题

然后老师算的时候还算了两个半周期的情况(0, T/2和T/2, T),其实根据对称性只需要求一个半周期(0, T/2)之内的情况就够了,因为剩下的那半个周期直接对称就完事了
卷积有交换律和结合律,把这两个一起用就可以得到对于多个项的卷积你可以任意调位置,从哪里开始卷积都可以
分配律和乘法一样的
\(x(t)\ast u(t)\)是从负无穷到t的变限积分,\(x[n]\ast u[n]\)是从负无穷到n的累加
定义了一个冲激偶函数

另外δ'(t)是奇函数,因为δ(t)是偶函数所以求导是奇函数了
\(\frac {dx(t)}{dt}=x(t)\ast \delta'(t)\),因为微分器d/dt是LTI系统,而且单位冲激函数经过它得到的单位冲激响应是δ'(t),所以x(t)输入之后得到的响应就可以用x(t)卷积单位冲激响应来表示
用上面提到的性质可以证明,LTI系统的单位冲激响应等于单位阶跃响应求导,另外单位阶跃响应是单位冲激响应的变限积分。
为什么呢,其实很显然,首先支撑范围是不变的,就是你x整体左移,h整体右移,最左边加最左边和最右边加最右边都是一样的。然后卷积得到的值其实和它们的绝对位置没有关系,只跟它们有重叠部分的那些地方有关系,所以最后的值也是一样的

其实熟练了,你就知道卷积一个δ相当于把x往左往右移动而已,δ(t-t0)意味着相对于原来的位置向右偏移了t0。其实你可以把δ(t)想象成一个手柄,然后卷积的时候就好像你用鼠标拖拽这个柄,函数也相应地移动,PPT里移动文本框的这种感觉。
如果要求卷积的逆运算,对于离散的情况是容易的,需要用到的结论是x[n]长度为N1,h[n]长度为N2的话,那么卷积之后长度就是N1+N2-1,根据这个可以反推未知的序列的长度。然后你就可以一个一个列方程来算,首尾可以直接得到,中间项就稍微麻烦一点就设一下解一下就行。
但是对于连续的来说就比较麻烦,需要用到傅里叶变换
解释一下前面提到的LTI系统是因果系统的等价条件

如果h(t)在0以左没有值,那么卷积的时候,每一个x(t)其实就只有负无穷到t0的需要积分,但是如果h(t)在0左边也有值,那么卷积的时候就会在t0右边还有需要积分的部分
傅里叶级数(FS)¶
傅里叶级数英文Fourier Series,首字母为FS。也有人写为CFS,这个C是Continuous time也就是连续时间的意思,连续时间傅里叶级数,和后面DFS,离散时间傅里叶级数区分开
傅里叶级数针对周期函数
傅里叶级数是在解决热传导问题的时候提出来的,热传导问题是给一个偏微分方程求解,现在已知方程的正弦,余弦和常数特解,希望得到通解。傅里叶提出可以通过把任意周期函数分解成正弦,余弦和常数的和的形式
于是可以据此得到热传导问题的通解,热传导问题这里不展开
傅里叶本人并没能严格证明取等条件,后来迪利克雷研究出了一个充分条件(即满足这些条件就可以写这个等号,但是也有能写等号但不满足这些条件的情况)
如果f(x)满足①一个周期内绝对可积②一个周期内有限个第一类间断点(可去间断点或跳跃间断点)且没有无穷间断点③一个周期内有限个极值点。
一般工程上遇到的波形都满足这三个条件,可以用级数展开
傅里叶级数是对周期函数的展开,周期函数本身有一个最小正周期T0,这个T0对应的ω定义为基波频率ω0,而2ω0,3ω0等角频率被称为高次谐波频率。其实就是模电里的说法,B0是直流分量,ω0的(包含sin和cos)称为基波分量,更高的称为高次谐波分量(比如二次,三次谐波分量)

知道了ω0的含义,接下来就是要问如何得到系数。这里要引入正交基的概念,定义正交基之前要先定义内积和基。

满足这些规则的运算就可以被称为内积,常见的内积有线性代数里的那种两个向量点乘的,而傅里叶级数用到的是积分\(\int_0^{T_0}f(t)\overline{g(t)}dt\)作为内积
接下来定义什么是基,在这里基是可以经过线性组合表示任何周期函数的一组函数,且线性无关。傅里叶级数里就是用了sin和cos作为基底。
定义了内积和基,正交基就是一组两两内积为0的基,而这里选的若干函数正好满足这个需求

而自己和自己内积得到的结果非零,比如\(\int_0^{T_0}1dt=T_0\),\(\int_0^{T_0}\sin^2(k\omega_0t)dt=\frac {T_0} 2\),\(\int_0^{T_0}\cos^2(k\omega_0t)dt=\frac {T_0} 2\)
根据这样的性质,很容易得到傅里叶级数中的系数,这其实是利用了正交基的特性
\(\int_0^{T_0}f(t)\cdot 1dt=\int_0^{T_0}f(t)\cdot a_0dt=a_0T_0\)(和1做内积得到1的系数)
\(\int_0^{T_0}f(t)\cdot \cos(k\omega_0t)dt=\int_0^{T_0}\cos^2(k\omega_0t)\cdot a_kdt=a_k\frac{T_0} 2\)(和cos做内积得到cos的系数)
\(\int_0^{T_0}f(t)\cdot \sin(k\omega_0t)dt=\int_0^{T_0}\sin^2(k\omega_0t)\cdot b_kdt=b_k\frac{T_0} 2\)(和sin做内积得到sin的系数)
于是将一个周期函数展开成傅里叶级数的步骤就是:①确定这个周期函数的最小正周期,求出T0和ω0②写出带系数的展开式③将f(t)依次和1,sin(kω0t),cos(kω0t)做内积,就是算积分,这一步最麻烦④解出系数写出完整展开式
傅里叶级数除了三角形式之外,还有复数形式。提出复数形式是为了让系数计算不用算三个,只需要算一个就行。不过更本质的其实是,e^{st}是后续各种变换的基。
把a_k写成c_k也行,看个人习惯,表达的都是那个意思
本质上是把正交基从1,sin(kω0t),cos(kω0t)换成了e^(jkω0t)。但你可能会疑问这里怎么内积的时候用的是共轭复数,是因为复内积的定义里就是要加一个共轭的,用三角的话都是实数就没有这个变化
要实现系数互推也简单,利用欧拉公式得到

于是k>0时\(c_k=\dfrac {a_k-jb_k} 2\),k<0时\(c_k=\dfrac {a_{-k}+jb_{-k}} 2\)
得到这个关系之后用反解ak和bk也就很容易了\(a_k= c_k+c_{-k}, b_k=j(c_k-c_{-k})\)

这里老师写的是Bk做cos的系数,不过无所谓,你自己选好用哪个就行。注意ω0和T之间存在关系,不要忘了化简。sin的系数全为0,因为原本是一个偶函数那就不会有奇函数分量了。
傅里叶级数的指数形式是更常用的,因为和后续的傅里叶变换等表达式更加一致,而且也不用考虑sin和cos的问题,统一用指数来做正交基

注意到这里还没完,当k=0的时候你算一个极限得到0处的常数的值
最终化简完是一样的

指数形式的傅里叶级数有人用a_k有人用c_k,无所谓的,你知道都是那个意思就行
除了三角和指数作为正交基之外,还有其他的正交基比如哈尔小波,勒让德多项式。信号处理部分好像还有一种叫小波分析的,可以自行了解
连续时间傅里叶变换(CTFT)¶
Continuous time fourier transform首字母CTFT
定义¶
傅里叶变换针对非周期函数,其实就是把T当作无穷大了,那么就没有具体的ω0了,所以就要用频率连续的来表示
这是傅里叶级数
把\(c_k\)写成表达式得到
经过乘ω0除ω0得到
当ω0→0,就从求和变成了积分,ω0当成dω0,T0变成无穷
令\(X(\omega)=\int_{-\infty}^{+\infty}x(t)e^{-j\omega t}dt\)即可写出以下常用形式
从x(t)到X(ω)称为正变换,是从时域到频域,平时说的傅立叶变换就是这个。从X(ω)到x(t)称为逆变换,是从频域到时域。变换公式就是这两个
X(ω)和\(c_k\)在比例上是相同的,更具体地说,如果你取周期函数x(t)的单周期做傅里叶变换得到X(jω),那么原本周期函数的傅里叶级数的系数\(c_k=\frac 1 {T_0}X(jk\omega_0)\),所以其实周期函数的傅里叶级数都可以用连续时间傅里叶变换来求了之后再去求系数。从这里其实就已经可以看出后面DFT和DTFT的关系了,其实也是频域采样的结果,而且对于连续的都是使用“取单周期得到连续频谱再在连续频谱上取点得到离散频谱”的方式。
不经过傅里叶级数也可以证明
需要用到调整积分顺序,把内部的t改成另一个变量以免和外部的t搞混等操作,我觉得比较麻烦就不记录了
补充各项是实数还是复数
FS
- 时间变量 t:实数。
- 频率变量:离散谐波次数k为整数,基频ω0为实数。
- 傅里叶系数:
- 指数形式:系数 cn 通常取复数(包含幅度和相位信息)。
- 三角形式:系数 an,bn 对实函数为实数;若原函数为复函数,则也可为复数。
- 原函数 f(t):可以是实数(常见于物理信号)或复数(数学推广)。
CTFT
- 时间变量 t:取实数(t∈R)。
- 频率变量 ω(或 f):取实数(ω∈R)。
- 变换结果 F(ω):通常取复数(即使原函数为实函数,其傅里叶变换也一般是复函数,包含幅度谱和相位谱)。
- 原函数 f(t):可以是实数(常见于工程应用)或复数(理论分析)。
常用傅里叶变换¶
这些公式都是直接记直接用,不要求掌握怎么推
先看第一个,就是一个大于零指数衰减的原函数,然后1/(a+jw)通常用模长和辐角来表达,相当于幅频特性和相频特性了,1/(a+jw)的模是\(\dfrac 1 {\sqrt{a^2+\omega^2}}\),辐角是\(-\arctan(\dfrac \omega a)\)。注意必须熟练掌握对复函数求模和辐角的方法,用上复数求模的性质。比如如果是分数的话那直接分子分母各自求模相除即可,没必要分母有理化然后写成a+bj的形式再求,那样太麻烦了。比如这里,1/(a+jω),分子模长1,分母模长\(\sqrt{a^2+\omega^2}\),一除就好了。然后辐角其实也可以这样求,分子辐角0,分母辐角arctan(ω/a),那相减就完事了。看到分数的X(jω)不要慌,不要分母有理化!另外看到相频特性也不要慌,它仅仅是\(e^{j()}\)括号里的那一坨东西罢了,很好翻译成完整的复数表达式

幅频特性长这样的(ω绝对值小的时候值大,ω绝对值大的时候值小)就是低通滤波器low-pass filter。老师讲课的时候用X(jω)和我前面的X(ω)是同一个东西。自变量确实是ω,写成X(jω)是为了体现把X(s)的所有s换成jω
对于这个|X(ω)|,ω=\(\pm\sqrt 3 a\)的时候模长变为1/(2a)也就是最大值的一半,这时的ω称为截止频率,就是-3dB,学过模电的应该很熟悉了
对于每个常用变换,都需要熟悉x(t),X(jω),以及幅频特性和相频特性
第二个\(\delta(t)\overset{\mathcal{F}}{\longrightarrow}1\),证明的时候用上δ(t)的筛选性质就得到了,不过注意这个1是一个常函数而不是一个值
第三个\(1\overset{\mathcal{F}}{\longrightarrow}2\pi\delta(\omega)\),反着推容易,用上傅里叶逆变换的公式然后也是用筛选性质就直接得到了,正着推需要用到之前提到的一个极限,\(\lim\limits_{\omega\to\infty}\dfrac {\sin(\omega t)}{\pi t}=\delta(t)\)
第二条和第三条放一起记,是对称的
第四和第五就是方波和Sa互为傅里叶变换,Sa就是sin(t)/t
第四个推起来简单的,中途有一步用到欧拉公式。第五个用逆变换推就类似,如果正着推就比较麻烦。

用的时候,知道方波和Sa对应,所以先把Sa写出来,那Sa里面肯定有个ω写上,然后把方波的边上的数字写进去,然后把方波面积作为Sa的系数。
如果是已知频域是ASa(kω)需要反推原函数,先判断原函数是方波,然后直接确定边界是±k,然后就需要确定高度。由于它是平的,所以你只要知道0处的高度就行,又因为\(x(t)=\frac 1 {2\pi}\int_{-\infty}^{+\infty}X(\omega)e^{j\omega t}d\omega\),所以当t=0时就相当于对X(ω)做一个从负无穷到正无穷的积分再除以2pi就行。只要熟练应用sin(ωt)/t积分为pi即可
第五个在用的时候有一个快速的方法,首先你知道它变换得到一个方波,而且根据sin里的系数直接把边界给写出来。而要确定高度的时候,我们只要找它在ω=0时的高度即可
由\(X(\omega)=\int_{-\infty}^{+\infty}x(t)e^{-j\omega t}dt\),当ω=0,相当于直接对x(t)从负无穷到正无穷积分,然后根据sin(ωt)/t从负无穷到正无穷积分为pi直接写出高度即可
\(\int_{-\infty}^{+\infty}x(t)dt=X(0), \int_{-\infty}^{+\infty}X(\omega)d\omega=\frac 1 {2\pi}x(0)\)
总是更加喜欢方波,因为它实际上只有两个参数,而且0部分的值可以用来参考。实际上只需要记忆时域是方波和时域是sin/t形式的正变换怎么做即可,遇到了要求反变换的时候直接用对偶性做正变换然后再除以2pi即可,由于这里都是偶函数,所以翻转前后一样。所以没有必要再反推,只需要正推即可。
我解释一下这里,因为对偶性还没有讲。简单来说,CTFT的正变换和逆变换其实是可以相互转换的。你如果想对频域做逆变换,只需要把频域的自变量换成t,然后把它关于y轴对称,再对对称后的图形做正变换,注意此时的“正变换”本质上是逆变换,所以你要把变换后的自变量换回t,这样就正确了。没搞懂也没关系,我自己感觉这样比较快,理解不了就老实用原来的方法

u(t)的推导比较麻烦,务必记得还有个piδ(ω)项。后面学到拉普拉斯变换是很干净的1/s,但那是在收敛域Re(s)>0里。而傅里叶变换在jω上,就会出现这么一个项
性质¶
性质不用掌握怎么推,可以稍微了解一下,这样也有利于记忆
线性性,频移时移,微分性质¶
第一个是线性性,根据积分的线性性就很容易得到了
凡是阶梯状的都很容易拆成若干方形的组合,另外用上常函数1相关的也很容易去凑
符号函数可以用2u(t)-1表示,也可以用u(t)-u(-t)来表示,用两种这两种办法都可以得到相同的结果,就是sgn(t)→2/(jω)。
所以用线性性其实就是尝试把要变换的函数分解成那些已知的函数的线性叠加
已知的那些,偶函数的有1,方波,cos,Sa。其实原函数和变换后的X(ω)的对称性是相同的(如果有对称性),所以就那几个对就可以了
反正有奇对称和偶对称的然后又是平平的就喜欢用线性性
第二个是时移性质,这些性质我觉得都可以从拉普拉斯变换的性质那里迁移过来,因为本来傅里叶变换也就是拉普拉斯变换的特殊形式
用定义很好证明,积分换元的事情
当给出的x(t)虽然不是奇函数或偶函数,但是经过平移可以变成奇函数或偶函数的话,用时移性质就行了。注意时移性质中ω是自变量,X(ω)并不是乘以一个常数

可以熟悉一下就不用再搞一次欧拉公式了
或者其实后面学了调制性质你就理解为和cos对应的傅里叶变换做了卷积,相当于在两边各复制了一份

然后这个是求一个反变换,注意看到相位部分是正比例函数就要想到时移性质
这里如果知道了群延时的概念,也就是对相频特性求导取负号得到的是延时的t0(就是原来的从t变成t-t0),那就容易了。先对幅频特性直接求反变换得到2Sa(2t)/pi,然后对相频特性求导得到-2,那就是延时了2,那么原来的就是2Sa(2(t-2))/pi
第三个频移性质
也是用定义容易证明
用频移性质来推sin(ω0t)和cos(ω0t)的表达式是比较容易的,都是从1的傅里叶变换通过频移来获得

微分性质
时域
δ(t)的n阶导经过傅里叶变换得到(jω)的n次方。其实你就理解成微分算子经过傅里叶变换变成了jω这一项就好了
频域
用这个性质容易推出
应试范围的最多考到n=2的情况
卷积性质¶
时域
记住时域卷积等于频域相乘

我自己做的时候是先拆成两个宽度相同的方波,一个高度为1一个高度为½来做,不过这里他说可以直接用三角形面积作为Sa方的系数。之所以是Sa方是因为你知道三角波要分成两个方波,就有了两个Sa相乘,然后你待定系数A,既然\(X(\omega)=\int_{-\infty}^{+\infty}x(t)e^{-j\omega t}dt\),当ω=0的时候,X(ω)的值就是x(t)图象的面积代数和。由于X(ω)已知是ASa方(ω),当ω=0的时候Sa趋于1,于是这个点的值就是A。所以就得到x(t)自己做一个积分得到的结果就是A

梯形的系数也是一样用面积确定,麻烦一点的就是要根据宽度不同的方波得到梯形波的结论推导出两个边界
要特别注意方波卷积成三角波的时候宽度是三角波的一半,不然Sa里的系数就搞错了

这道题最聪明的方法是这样做,我一开始想到的方法是把u(t)拆解掉变成多个三角波的叠加,因为我关注到斜率是45度,如果一个增加一个减小那么和就是不变的,这是一种方法,不过就没有这里直接看出这是什么东西的卷积那么巧妙
如果看到从0开始的话就可以想想是不是方波和什么东西的卷积
有了卷积性质,就可以解决已知卷积的结果和其中一个被卷积的函数,然后求另一个被卷积的函数的题目了

注意要分别对x(t)和y(t)做傅里叶变换,然后把两个ω的函数相除再进行逆变换就可以得到h(t)
最高境界就是把h(t)和H(ω)看作同一个东西,这个被称为LTI的系统函数
看完了前面的来做练习题

第二题易错,务必写清楚到底是谁乘以谁,而且cos和sin和δ的关系要搞明白,不要直接套公式
第四道题易错,要区分好两个时移的性质,这个可以用调制性质,但是注意2pi是乘还是除,确实容易错
有了卷积性质,就可以验证那句话,LTI系统简单到只要知道任意一个不为零的输入对应的输出,就可以知道任何输入的输入,用H(ω)=Y(ω)/X(ω)再反变换回去就能得到h(t)
关于卷积性质我还有补充的,就是不是什么时候都能用H=Y/X来求出H,因为有些时候Y和X里面带δ,这个时候不能求出所有的H,但是可以求出一部分H

比如这个,x和y只由直流分量和若干谐波得到,这个时候你对x, y做傅里叶变换没法除,因为δ你处理不了。但是尽管如此,仍然可以得到部分H的值,核心结论是下面这个

1变成2,所以H(0)是2,4cos(2pi t)变成2cos(2pi t+pi/2),这里相同频率的话正弦余弦都一样,只是差了相位,用三角恒等式化成同名然后符号相同就行,那么|H(2pi)|=½,∠H(2pi)=pi/2,然后H(3pi)=0
h(t)为实数(这里默认)的LTI系统满足幅度谱偶对称,相位谱奇对称,所以H(-2pi)和H(-3pi)也容易求得
积分性质
不用背,你只要知道变限积分可以写成x(t)卷积u(t)就行,然后就用卷积性质做
重新审视常见的系统
| 系统名称 | 冲激响应 \(h(t)\) | 频率响应 \(H(\omega)\) |
|---|---|---|
| 微分器 | \(\delta'(t)\) | \(j\omega\) |
| 积分器 | \(u(t)\) | \(\frac{1}{j\omega} + \pi \delta(\omega)\) |
| 延时器 | \(\delta(t - t_0)\) | \(e^{-j\omega t_0}\) |
后面采样部分会涉及到微分器和延时器的离散版本的设计
比较两种方法算卷积
常规卷积

后面分类讨论t<0和t>0分别积分
用傅里叶变换

注意可以分解成两个之和,不要直接用反变换公式算
这部分经常用到分式的因式分解,你如果把jω当成x,就是要把二次分式分解成若干1/(a+x)的线性组合
练习题


遇到等式直接全部做傅里叶变换就完事了,然后最后还是相当于做一个分解然后做一个反变换,还是考分式的分解,这东西在微积分那里都考烂了
我还是补一下分式的分解吧
留数法进行部分分式分解
如果是假分式,即分子次数比分母次数大,先用长除法得到真分式

然后对分母进行因式分解,分几种情况,我们最喜欢看到的情况是相异的几个极点(分母项)比如(s+a)(s+b)(s+c),这种情况下用“盖起来算其他”,譬如这里的(s+3)/(s+1)(s+2),它的分解形式为A/(s+1)+B/(s+2),如果要求A,就让s+1=0(即s=-1),并把(s+3)/(s+1)(s+2)中的(s+1)盖起来,只看(s+3)/(s+2),然后把s=-1代入得到2,对B同理,是令s=-2然后把它盖住算就行。这种简单的形式其实用配凑(用分母因式线性组合出分子)会更快,比如瞪眼看出s+3=2(s+2)-(s+1)然后直接除就行。留数法对分母超过两次的才有明显的优势,因为超过三次的时候分子不好瞪了。
但是如果分母有重根,不建议用留数法,因为需要额外的求导之类的东西,建议用常规的待定系数法。另外如果分母有不能分解为实数的根的话(Δ<0),同样不建议用留数法,建议用cos(ωt)u(t)对应s/(s^2+ω^2)等来配凑,结合频移性质来凑。
哦不过如果分母是(s+1)(s^2+2s+5)像这样,对于单极点还是可以用上面的留数法来做的,但凡有一项出来,剩下的待定系数都会变得很简单
正弦交流电路里的相量是经过傅里叶变换的X(ω)
调制性质¶
反过来证明简单,其实很容易理解,卷积性质成立的话,那逆变换的时候相比正着就是多了一个1/(2pi)

注意多一个1/(2pi)
一个常用的性质是时域乘以2cos(ω0t)那么频域就会往左右两边各移动ω0,而且高度不变
使用调制性质可以很容易求以下这个卷积
频域卷积对应时域相乘,这里还需要乘以2pi,然后还有注意u(t)相乘之后就只剩下一个了,变成时域是\(2\pi e^{-(a+b)t}u(t)\),然后你直接做正变换就容易了,得到卷积后是\(\dfrac {2\pi} {a+b+j\omega}\)
讲了调制性质就顺便讲调制和解调,调制是modulation,解调是de-modulation。这里只讲最简单的一种,叫做正弦载波幅度调制其中的双边带抑制载波(DSB-SC)调制与相干解调
调制步骤是把初始的x(t)乘以一个载波cos(ω0t)得到y(t)发出去


先把x(t)经过低通滤波器得到一个带限信号,然后再乘以cos(ω0t)发出去,这是调制
解调是把y(t)再乘以cos(ωct),乍一看有点莫名其妙,但是经过傅里叶变换实际上就又得到了在中间的波形

乘了之后还需要用一个低通滤波器把两边的给去掉,然后需要变成原来的两倍就得到了还原的X(ω)
如果原信号截止频率ω0,而载波信号频率ωc,则低通滤波器的截止频率ωp满足
低通滤波器就是在频域里是一个高度为2的方波,据此推出时域的Sa

之所以要调制不能直接传,是因为低频信号穿透性不好,需要用高频信号发射出去,而且高频信号可以控制载波频率,避免信号重叠
其实光从时域也可以解释,\(w(t)=x(t)\cos^2(\omega_ct)=x(t)(\frac{1+\cos(2\omega_ct)}2)\),其中x(t)/2被保留,能量变成一半,而cos(2ωct)被滤掉了
如果只是传一个信号,这种先分开再集合还原的做法好像有些麻烦多余,但是如果要传多个信号,防止干扰的时候这种做法的意义就体现出来了
多个信号传输的时候需要满足更多约束才能保证能分开

为了不发生重叠,需要让ωc2-ωM > ωc1+ωM

用来卷积的那个Sa就是理想低通滤波器

第一个是0中心的,第二个是有延时的。在频域方面其实都能实现限制频率在±wc之间,只是卷积之后的两个函数不一样
理想低通滤波器的局限性之一是它是非因果的,如果你想要得到y(t),必须把所有x(t)都得到才能进行处理,就做不到实时的处理,只能全部记录完之后再处理。因果系统的h(t)在卷积时只需要用到过去发生的值(未来的为0),所以可以实现实时处理,但是就不是理想的
一个容易引起误解的表述“理想低通滤波器不能实现”,意思是理想低通滤波器,也就是这个Sa,做不到实时处理,因为它卷积要用到负无穷到正无穷的x(t)。但是如果你已经把要处理的x(t)记录完了用这个来做低通滤波完全没问题
理想低通滤波器的第二个局限性是它会把陡峭上升沿变成逐渐衰减的震动,学名叫振铃效应,胡浩基把它比喻为年轮

卷积了之后时域的y(t)就会出现这种震动,其实本质上还是Sa它自己就是一个振荡衰减的图,就是这些一瓣一瓣的正负在导致震动。如果对二维图像比如一个纯色圆做这种低通滤波,就会出现一圈一圈的像年轮一样的逐渐变淡的图象
于是在自己设计滤波器的时候可以考虑增加主瓣面积,减小旁瓣面积,主瓣就是Sa最大的那个。这种思想设计出来的叫做巴特沃斯低通滤波器。但是这种设计的代价是上升没那么陡峭,换来了其他地方的振铃效应更小
由于这两个缺点,在实际应用的时候几乎不用理想低通滤波器
尺度变换,对偶性,帕斯瓦尔定理,共轭对称性¶
尺度变换
若信号时域胖则频域瘦,若时域瘦则频域胖。因为时域变胖相当于a减小(a<1),于是频域的频率变大,于是就看起来更瘦(比如如果是Sa的话)
又比如1和δ(t)的变换对,δ(t)是瘦到极致,1是胖到极致,其实不应该用胖还是瘦,应该用是否平缓来衡量
另外根据这个拓展一下,用上时移性质可以得到
对偶性
本来正变换和逆变换的运算就是类似的,只是一个是逆时针绕一个是顺时针绕,还有逆变换多除了2pi
本质上是正变换和逆变换存在一个反演的关系
所以你做两次傅里叶变换(暂且忽略自变量的改变),把其中一个F替换成F-1,它自己就消掉了,剩下2pi和一个-
这意味着做傅里叶逆变换的时候,只需要把自变量看成t,先关于纵轴对称,然后做傅里叶正变换,然后再除以2pi,再把自变量从ω换回t就行。
别忘了最终的自变量还是ω

这个只要之前那题对于符号函数的傅里叶变换结果还记得就比较容易推,后面会讲到,不过如果没反应过来对偶性还是会很懵的
帕斯瓦尔定理
物理含义是傅里叶变换能量守恒,不过差个2pi的系数
来一道一题多解
$$ \int_{-\infty}^{+\infty}(\frac {\sin(t)} t)^2dt= ? $$ 第一种方法,理解为能量,那你就把Sa(t)的频域求出来,然后把频域能量求出来除以2就行,频域就是一个方波,很容易求,别忘了平方。
第二种方法,理解为X(0),先求Sa²(t)的傅里叶变换,然后X(0)就是这个表达式的值

另外帕斯瓦尔定理不适用于能量无限的信号,比如δ(t)。δ(t)平方是未定义的,你从频域积分无穷大也能看出来
来一道特别好的题,非常好地把傅里叶变换的原始积分的定义和后面直观的用性质的处理方法给结合了起来

首先直接求X并不难,得到是\(X(j\omega)=E\tau Sa(\frac \tau 2 \omega)e^{-j\frac \tau 2 \omega}\),注意其实相频特性只需要看\(e^{j()}\)的括号里的部分,你看EτSa那部分都是实数啊,实数就只是模,不会包含相频特性。我觉得确实对于常用傅里叶变换要搞明白它们的幅频特性相频特性,这样就可以对这种表示方法祛魅了。那么第一题就是\(-\frac \tau 2 \omega\),第二题直接带入X(0)得到Eτ,或者你可以根据傅里叶变换的定义可以得到
那就是直接时域积分,求面积,也就是Eτ,非常简单。
第三题其实也是一样的,相当于求2pi x(0),因为x(t)的表达式多一个½pi的因子。不过老师讲课时修正,认为x(0)应当是½(x(0+)+x(0-)),所以应该是pi E,因为对于这种左右极限不同的,傅里叶变换是收敛到左右极限的平均值
第四题看其实还是用\(x(t)=\frac 1 {2\pi} \int_{-\infty}^{+\infty}X(j\omega)e^{j\omega t}d\omega\),只需要让X(jω)改成题中的X(jω)乘以2sinω/ω,然后让t=2即可。那么我们就实际上要求一个\(2\pi x_1(2)\),其中\(x_1(t)\)=x(t)卷积以x=0为轴,宽度为2,高度为1的方波,不过由于τ不确定,需要分类讨论。但是其实我们没有必要把卷积结果给求出来,我们只关心x(2),所以我们也可以用公式法,用积分把x(2)给求出来,还是挺麻烦的

其实积分都不难,但是要做好支撑的分类
第五题更简单,只要用上帕斯瓦尔定理,去算一下时域的能量再乘以2pi即可,得到2pi τE²
第六题也简单,你就把X(jω)的那个相频特性给用欧拉公式展开成实加虚的样子然后老实做反变换即可

共轭对称性
x(t)为实偶函数,则X(ω)也是实偶函数
x(t)为实奇函数,则X(ω)为纯虚奇函数,比如符号函数对应2/(jω)
这两条反过来也成立,其实很好理解,反变换和正变换本来就很相似。我觉得没有必要反过来,你把反变换当成正变换就行,因为对称之后除以2pi不改变对称性。比如给你X(jω)问你x(t),那你仍然记实偶对实偶,实奇对虚奇,X(jω)实偶那对应x(t)也是实偶
简称实偶对实偶,实奇对虚奇。其实还有虚偶对虚偶,虚奇对实奇,其实用实的直接推过来就行,只是两侧多乘了j而已。
证明方法是把e^(-jωt)用欧拉公式展开,然后用奇偶性积分的性质来消掉一些东西
x(t)为实函数,则X(ω)的实部为偶函数,虚部为奇函数,证明方法是把x(t)分解成奇函数+偶函数然后用上面关于实偶实奇的结论,x(t)的偶分量得到X(ω)的实部,奇分量得到虚部。这句话反过来也对,如果X(ω)实部偶函数虚部奇函数,则x(t)为实函数
如果X(ω)是实函数,那么也是符合x(t)实部偶函数,虚部奇函数

x(t)为实函数,则|X(ω)|为偶函数,θ(ω)为奇函数,这个用Re和Im来表达|X(ω)|和θ(ω)就容易证明了,而且实部是偶函数,虚部是奇函数
x(t)为虚函数,则幅度谱偶函数,相位谱非奇非偶,但是实部是奇函数,虚部是偶函数
例题:实因果信号x(t)的X(jω)实部为1/(ω²+1),求x(t)
用到一个傅里叶变换,这个可以背,不过也很好求
这个通过1/(a+jω)+1/(a-jω)就能得到了

用傅里叶变换求周期信号的傅里叶级数¶
由于周期信号可以写成
那么对它做傅里叶变换就可以得到
解释一下为什么\(e^{jk\omega_0t}\)变成了那个东西。首先是1对应2piδ(ω),然后频移性质可以给x(t)增加一个e^(jω0t),那么把ω0改成kω0就行了
如果要求周期信号的傅里叶变换就可以先求傅里叶级数的系数再用这个公式

务必区分清楚,周期信号的傅里叶级数和傅里叶变换得到的结果是不一样的。求周期信号的傅里叶级数分两步,第一步是看一个周期之内的傅里叶变换,第二步用ak=1/T倍X(jkω0)这个公式。求周期信号的傅里叶变换绝对不是一个周期内的傅里叶变换而是整个周期的,相当于你需要对时域卷积一个冲激串,于是你频域需要和一个冲激串相乘,不过一般先得到傅里叶级数再得到傅里叶变换,就比傅里叶级数多一步,需要用\(X(\omega)=\sum\limits_{-\infty}^{+\infty}a_k(2\pi\delta(\omega-k\omega_0))\),好吧其实还是用和冲激串相乘的思路,只是要把ck换成傅里叶级数,这么说不做三步做两步也行,即先求一个周期的,然后再和周期冲激串在频域相乘
对一个周期内的波形做傅里叶变换(注意这一步得到的不是整个周期信号的傅里叶变换,对周期信号做傅里叶变换是不收敛的),然后用\(a_k=\frac 1 TX(k\omega_0)\),也就是把ω都替换为ω0再整体除以T,就得到了ck
介绍一个叫周期冲激串的东西,后面采样什么的会用到

其实频域很好记,间隔和高度都是ω0
离散时间傅里叶变换(DTFT)¶
Discrete time fourier transform,首字母DTFT
这里的ω(数字角频率)和之前CTFT的ω(模拟角频率)意义不同,但是在信号与系统课上没有把这一点展开,因为这是后续数字信号处理课程的内容。如果用Ω表达数字角频率,那么关系是Ω=ωT。数字角频率是归一化角频率,用\(\Omega=2\pi \dfrac f {f_s}=\omega/f_s=\omega T\)来计算,其中f_s是采样频率。归一化就体现在f除以f_s,相当于以f_s作为衡量的标准。胡浩基老师先讲了DTFT,才讲采样,是为了延续CTFT的内容,先把这部分怎么算给讲完了,才去讲DTFT是怎么来的(采样)
要对比离散时间傅里叶变换和连续时间傅里叶变换。\(X(e^{j\omega})\)的自变量是ω,但是为了和连续的区分,因此这里必须写成e^(jω)。所以题目给X(jω)或X(ω)的时候,你要知道变换回去是x(t),而\(X(e^{j\omega})\)变换回去是x[n]
\(X(e^{j\omega})\)是自变量为ω,周期为2pi的周期函数。之所以是周期函数是因为它这里是求和,加减2pi相当于多了若干\(e^{-j2\pi}\),相当于乘了1
注意离散时间傅里叶变换和连续时间傅里叶变换的关系,连续时间处理的是x(t),离散时间处理的是x[n]。而它们的基函数是不同的,连续时间傅里叶变换的基函数是\(e^{j\omega t}\),离散时间傅里叶变换的基函数是\(f[n]=e^{j\omega n}\)。这意味着,就算频域的函数相同,比如都是常函数1,它们的原函数也不相同。
离散时间傅里叶变换的直观理解和连续时间傅里叶变换的完全不同,这是刚学DTFT这块容易感到困惑的原因。在理解连续时间傅里叶变换的时候,我们可以想象一个个频率不同的正弦波(从胖到瘦)叠加起来,但是在理解离散时间傅里叶变换的时候,我们不应当想象连续的波,而是想象频率不同的正弦序列(没有直观的胖瘦,而是更加破碎零散)叠加起来,这样就很容易理解为什么会出现周期性(本质上是采样之后不同成分会发生混叠)

要理解你在用这种东西去拼成原始的x[n],而不是正弦波,这就是区别
x[n]在算的时候可以在任意一个宽度为2pi的区间做积分,被积分的函数相对ω也是以2pi为周期的。其实就是因为任意x[n]只需要用某个宽度为2pi区间的这些频率的e^(jωn)来表达就行了,其他的都用不到。
特别注意离散时间傅里叶变换,时域都是离散的,频域都是连续的,当你看到一个1的时候,你要区分它究竟指的是常函数1,也就是连续的全平的那个,还是离散信号一个一个都是1的。
常用傅里叶变换¶
只要记住H(\(e^{j\omega}\))是以2pi为周期的就不容易漏掉δ项
第一个

知道是等比数列求和就容易记了
这里时域的样子是这样的

然后把它的幅频特性是\(\dfrac 1 {\sqrt{a^2-2a\cos(\omega)+1}}\),是一个振荡的,最高点和最低点在1/(1-a)和1/(1+a)之间取,看a的正负性来决定哪个是更高的
这个东西要算的话有点麻烦,你要把e^(-jω)展开成cos和sin,然后分母实数化得到实部和虚部再求模。一般只是把它进行代数处理而很少用图去理解它。后面又会遇到分式的分解,你可以直接把e^(-jω)设为x。
我觉得连续的写成X(jω),离散的写成\(X(e^{j\omega})\)大概就是因为这个最经典的变换,你看连续的是变成1/(a+jω),离散的是变成这个东西,就是一一对应的
第二个

注意这里的1仍然是连续的常函数(DTFT的频谱是连续的),而不是离散的。这个和连续时间傅里叶变换的很像,但是并不是δ(t)=δ[n],因为它们的基函数不一样。
第三个
这里的1指的是x[n]里每一项都是1,注意是离散的而不是连续的,也不是一个单独的数值
右边看起来有个求和很可怕,其实表达的意思不过是把-pi到pi内的东西按2pi为周期复制下去而已

对于离散时间傅里叶变换,需要时刻记住\(X(e^{j\omega})\)是以2pi为周期的
然后你也可以这样表达

表达的意思是一样的,考试时通常就这样写比较方便,只是千万别忘了加两条虚线来表达你知道它是周期重复的
这个的证明一般从右到左做,因为有筛选性质比较方便
而从左往右比较麻烦,但是这个过程中的一个处理方式是要记下来的

首先对e的那个累加变成了cos的累加是需要知道的,相当于把n互为相反数的两项组合起来变成2cos(nω)。然后从cos的这个累加变成sin的这个相除也是要掌握的,后面也会用到,这一步用到了积化和差,你把sin(ω/2)乘过去然后用积化和差会得到sin((N+½)ω)
这样更小的就被消掉了,只剩下最大的那个,比如如果加到2cos(2ω)那留下来的就是sin(5ω/2),对应关系是如果是nω那就剩下sin((n+½)ω)
而从sin的到δ那一步太复杂了,也不要求,就不证明了
在这里离散和连续也可以一起记忆,因为离散的简直就是连续的那个再以2pi为周期延拓得到的
另外这个性质其实其实可以callback周期冲激串的CTFT。如果周期冲激串以T=1为周期,那么得到的频域和这里一样,也是高度为2pi,间隔2pi的周期冲激串。由此可见,其实T=1的时域冲激串对原函数采样和序列采样得到的x[n]经过各自的变换,得到的表达式是一样的。(但是变量不一样,周期冲激串得到的是模拟角频率,序列得到的是数字角频率)
第四个
可能还是图形直观一些

用到了刚刚介绍过的变换过程
当ω→0,\(X(e^{j\omega})\to 2N_1+1\),可以用等价无穷小来证,也可以直接根据正变换的那个Σ的表达式直接把ω=0带进去,那就是做一个求和的事情
可以验证这个函数也是以2pi为周期的
第五个
这个和连续的简直是一摸一样,只是把t换成了n而且频域的是周期性
当n=0,时域的值为ω0/pi,不同的ω0在这个点的值不一样,要小心。
然后需要讲到当ω0不在0到pi的时候如何处理,其实就是用到三角变换的事情,在离散时间傅里叶变换这里常用的变换有
处理ω0不在0到pi的情况下第五条变换只需要用到前两条就行,第三条可以用于化简带(-1)^n的表达式,另外转换的时候也可以,比如说你把\(sin(ω_0n+2\pi n)\)改成\(sin(ω_0n+\pi n+\pi n)=(-1)^nsin(ω_0n+\pi n)\)

比如如果是-的就把符号提出来然后反转就行,这样就已经实现了-pi到pi的所有的表示
然后如果是超出了-pi到pi,需要用+2kpi n的方法弄回-pi到pi的区间,然后还可能需要补一些δ[n]

但是还没搞定,因为我们只考虑了上面的改变,但是在0那个位置是有瑕疵的,原本0那里是5/4,现在变成了-¾,所以需要补2δ[n]

除了用这种方法,这种超出-pi到pi的还有另外一种方法,就是你先直接像连续那样变换,不管它在频域超出-pi到pi,然后你再用上周期性,把它两端有的给补上去,这时会发生重叠,重叠部分直接相加得到最终的结果

叠加之后的结果是一样的
这种方法在后面其他“超出-pi到pi”的场合也有应用
但是这种方法的弊端在于,如果ω变得太大,重叠的就会越来越多,更加难分析,不像上面的那种做法那样只要考虑0处的变化就行
如果是sin(npi)/npi,这个其实就是δ[n],得到的结果是1
性质¶
线性性,频移时移,差分性质,时域扩展,频域微分¶
线性性好说,主要看题
求sgn[n]的DTFT

时移性质
频移性质
有了频移性质就比较容易推cos(ωn)和sin(ωn)的傅里叶变换了

注意也是有周期性的
当然这里也会遇到ω0超出0到pi范围的问题,类似地需要用三角恒等式来搞,比如在括号里加2pi n或者pi n
不过这里就不用担心0那个点的值不同的问题了
sin(pi n)有两种理解方式,一种是你直接把它的序列写出来,它自己本身就是一个全0的序列,那傅里叶变换也肯定是全零的,注意变换后的0是常函数的0。第二种理解方式是你就套原来的结论,然后当周期性的时候pi那个地方一正一负叠加消掉了

而cos(pi n)就是也是可以先原样地套,然后根据周期来叠加,就可以这样
在这里需要掌握一个重要的相等关系,\(cos(\pi n)=e^{j\pi n}=e^{-j\pi n}=(-1)^n\)
这几个其实都是一样的,高中学数列的时候就有让你构造1,-1,1,-1的序列,其实就是有这么一些构造方式。所以这几个的傅里叶变换是同一个结果。
直接把\(e^{j\pi n}\)当作1的傅里叶变换经过频移也是很好理解的
要求这样一个以pi为周期的东西的傅里叶变换

如果只是以2pi为周期的话,还是很容易搞的,但是要怎么把频率变成原来的两倍,我头一次做的时候想到的是伸缩或者卷积之类的,没想出来,但是其实只要复制一份然后再移动pi就可以了

所以凡是遇到让频域图象移动pi个单位,相当于直接给原函数乘以(-1)^n,这个要很熟练,就跟之前连续那里在频域往ω0和-ω0放一个相当于原函数乘以2cos(ω0t)一样,是方便的东西
差分性质
这个直接用时移性质证明就行了
时域翻转
时域扩展
要解释一下\(x_{(k)}[n]\)的意思,这是一个新的序列,相当于在原序列的两两之间插入k-1个0。

而经过时域变胖,也就是拉宽了,会导致频域从ω变成kω,其实是压缩了,所以仍然满足时域胖频域瘦
这个性质考出来会比较难看出来,比如这样

用这个性质也可以做前面的一道题

只需要让频域变成-pi到pi之间,有-3pi/4到3pi/4的一个凸字形以2pi为周期的,然后时域在每个点之间插一个零,那么频域就压缩成½,那么就可以实现之前的结果了
频域微分
和时域一样,把t换成了n

这个可以记一下
时域卷积¶
时域卷积等于频域相乘
有卷积性质可以讲时域累加
又由于\(X(e^{j\omega})\)有2pi的周期,所以那个δ(ω-2kpi)用了筛选性质相当于第二项只需要乘以常数的\(X(e^{j0})\)
| 系统名称 | 冲激响应 \(h[n]\) | 频率响应 \(H(e^{j\omega})\) |
|---|---|---|
| 差分器 | \(\delta[n]-\delta[n-1]\) | \(1-e^{-j\omega}\) |
| 累加器 | \(u[n]\) | \(\frac{1}{1-e^{-j\omega}} + \pi\sum\limits_{k=-\infty}^{+\infty} \delta(\omega-2k\pi)\) |
| 延时器 | \(\delta[n-n_0]\) | \(e^{-j\omega n_0}\) |
DTFT你只要把\(e^{-j\omega}\)设为x那就还是相当于做分式的分解而已

这个就是最常规的分式分解的了,自己做的时候把e^{jω}设为x,然后按照自己习惯的方式分解成m/(a+x)+n/(b+x)的形式,然后让a和b变回1,也就是上下同除a或者上下同除b。注意是允许出现诸如1/(1+x/2)的形式的,因为常用公式里面要求|a|<1,a可以是负数,不是一定要写成1/(1-正数x)的形式
调制性质¶
虽然也是时域相乘等于频域卷积(除以2pi),但是这里的卷积是特殊的圆卷积,和连续的不一样。圆卷积是只在一个周期内卷积,这也很好理解,因为离散时间傅里叶变换这块有效的也就是一个周期。
没必要积分计算圆卷积,可以把它还原成普通卷积来做。正确做法就是只取两个原函数-pi到pi的频域(其余为0)然后做卷积,然后以2pi为周期延拓再除以2pi,得到的结果就是圆卷积的结果
注意对于x[n]cos(ω0n),不需要按这种单周期的方法做,而是直接做普通卷积即可,形式上是一样的,不需要仔细考究是否在-pi到pi,周期性已经蕴含在e^(jω)里了。

自己练习就行,注意系数


③其实就是②右移pi(或左移pi也一样),通过乘以(-1)^n,把②的低通滤波器变成了高通滤波器
④是相对麻烦一些的,如果用圆卷积定义来做,需要注意要考虑移动时旁边周期的也会过来有交叉。简单一些的方法,就是先不管它的周期性直接做卷积,然后再用上周期性然后叠加的部分加起来

更快的方法,用上三角恒等式

帕斯瓦尔定理,共轭对称性¶
和连续的也差不多,只不过左边是对离散的求能量
共轭对称性
仍然是实偶对实偶,实奇对虚奇
实序列经过DTFT,幅度谱偶,相位谱奇,且实部偶,虚部奇


第一步用上欧拉公式,然后这个形式直接得到x[n]我是真没绷住,第一次见真没思路,直接反变换比较难想,因为不像CTFT那样正变换和反变换可以换着用的关系,这里就比较不同。无论是正变换还是反变换,看到e指数,或者三角函数也要想到e指数,就要想到可以简单地做出来,因为原始表达式就是对e指数求和或者积分

然后到这里看似已经完成了,但是你还需要求0这个地方的值,就需要用上第二第四个条件


这题除了第二小问之外都非常困扰我。我先总结一下规律吧。先看幅度谱是不是偶函数,如果是偶函数那就比较简单了,时域要么是实偶(相位0),要么是实偶移动一下(相位谱线性相位),不会考其他的情况。如果幅度谱不是偶函数,那就看实部和虚部。注意幅度谱不可能是奇函数,因为它是模长啊,模长怎么可能有负的呢?这里第一问不要以为那个sin求和是幅度谱,幅度谱不可能是奇函数。正确的方式是看它的实部和虚部。实部是sin乘上e分出来的cos,是一个奇函数。虚部是sin乘上e分出来的jsin,是一个偶函数。实部奇虚部偶则为虚信号。如果是实信号,实部偶虚部奇,而且幅度谱偶相位谱奇。由于第一问这个频域不是偶函数也不是奇函数,所以x肯定不是偶函数或奇函数。
第三小问幅度谱是偶函数,相位谱非奇非偶,但是原函数是实函数,这打破了实函数对应幅度谱是偶函数,相位谱是奇函数的假设。更加严谨的表述可能是实函数对应幅度谱是偶函数,相位谱满足B(-ω)+B(ω)=2kpi的特征。但是问了老师之后发现,如果你把相频特性超越±pi的部分折回到±pi之间,那么(3)的相频特性实际上就是一个奇函数,这样就简单了。所以我建议必须首先看相频特性是否是线性相位,如果是线性相位先看是不是奇函数,如果是奇函数那么就很爽,因为它只是一个时移,你可以直接忽略相频特性,直接看幅频特性,如果幅频特性是实偶函数,那么说明原来是一个实偶函数,然后经过一个时移。如果幅频特性是奇函数,分实奇函数和虚奇函数,这个也可以直接对应原来的虚奇和实奇,也不难
补充离散冲激串的DTFT
如果m=2,如果和原信号相乘相当于隔一个地采样,但是变成0的那些仍然保留,这就和时域扩展不一样了。当m=2的时候,你实际上可以把它写成(1+(-1)^n)/2,这下看懂了,因为这个东西其实就是把频域在原来位置的基础上叠加一个频移pi的再除以2

又是一道类似CTFT那里的好题,需要从DTFT的定义上面来搞,不过还算是比较简单,因为都是已知的序列,然后呢后面帕斯瓦尔定理用的也比较常规,只需要推出绝对值里面的对应的x[n]就行。不过第二小问让我有疑惑,似乎不能简单认为有群延时
奇函数的线性相位,也就是只是-t0ω,其实是要经过unwrap的,真正的表达式是比较麻烦的,会跳跃±pi,但是让你做题写的,只需要写成正比例函数的形式即可。哪怕跳跃,只要斜率是固定的,那就都算线性相位
本页总阅读量次