信号与系统,MATLAB实验.pdf
信号与系统实验指导书信号与系统实验指导书 现代通信与电子技术示范中心 目目 录录 实验一实验一 连续时间信号的连续时间信号的 Matlab 表示与计算表示与计算 实验二实验二 连续时间系统的时域分析连续时间系统的时域分析 实验三实验三 连续时间信号的频域分析连续时间信号的频域分析 实验四实验四 抽样定理抽样定理 实验五实验五 连续时间连续时间 LTI 系统的频域分析系统的频域分析 实验六实验六 连续时间连续时间 LTI 系统的复频域分析系统的复频域分析 附录附录 MATLAB 主要命令函数表主要命令函数表 实验一实验一 连续时间信号的连续时间信号的 Matlab 表示与计算表示与计算 一 实验目的一 实验目的 1 初步学习 MATLAB 语言 熟悉 MATLAB 软件的基本使用 2 掌握用 MATLAB 描述连续时间信号方法 能够编写 MATLAB 程序 实现各种信号的时 域变换和运算 并且以图形的方式再现各种信号的波形 二 实验原理二 实验原理 连续信号是指自变量的取值范围是连续的 且对于一切自变量的取值 除了有若干个不 连续点之外 信号都有确定的值与之对应 严格来说 MATLAB 并不能处理连续信号 而 是用等时间间隔点的样值来近似表示连续信号 当取样时间间隔足够小时 这些离散的样值 就能较好地近似连续信号 在 MATLAB 可视化绘图中 对于以 t 为自变量的连续信号 在绘图时统一用 plot 函数 而对 n 为自变量的离散序列 在绘图时统一用 stem 函数 对于连续时间信号 f t 可用 f t 两个行向量来表示 例 t 10 1 5 10 f sin t t 可以产生 t 10 10 间隔 1 5 的序列以及 t t f sin 的值 用命令 plot t f 可得如下图形 显然显示效果较差 这是因为 t 的间隔过大 只要改 变为 t 10 0 5 10 可得图 1 2 图 1 1 图 1 2 1 信号的时域表示方法信号的时域表示方法 MATLAB 提供了大量用以生成基本信号的函数 比如最常用的指数信号 正弦信号等就 是 MATLAB 的内部函数 即不需要安装任何工具箱就可以调用的函数 1 1 单位阶跃信号单位阶跃信号 u t function y heaviside t 阶跃信号 y t 0 y 1 for t 0 else y 0 1 2 单位冲激信号单位冲激信号 t function chongji t1 t2 t0 冲激信号 t t0 t1和 t2分为起始时间和终止时间 dt 0 01 t t1 dt t2 n length t x zeros 1 n x 1 t0 t1 dt 1 1 dt stairs t x 以阶梯方式绘画 axis t1 t2 0 1 1 dt 或 function y delta t dt 0 01 y u t u t dt dt 1 3 指数信号指数信号 指数信号 at Ae在 MATLAB 中可以用 exp 函数表示 其调用形式为 y A exp a t 例如图 1 3 所示指数衰减信号的 MATLAB 源程序如下 取 A 1 a 0 4 program7 1 Decaying expponential signal A 1 a 0 4 t 0 0 01 10 ft A exp a t plot t ft grid on 1 4正弦信号正弦信号 正弦信号 cos tA o 和 sin tA o 分别用MATLAB的内部函数cos和sin表示 其 调用形式为 cos phitA o sin phitA o 例如图1 4所示MATLAB源程序如下 取A 1 2 0 6 program7 2 Sinusoidal signal A 1 w0 2 pi phi pi 6 t 0 0 01 8 ft A sin w0 t phi plot t ft grid on 图 1 3 单边指数衰减信号 图 1 4 正弦信号 除了内部函数外 在信号处理工具箱 Signal Processing Toolbox 中还提供了诸如抽样 函数 矩形波 三角波 周期性矩形波和周期性三角波等在信号处理中常用的信号 1 5 抽样函数抽样函数 抽样函数 Sa t 在 MATLAB 中用 sinc 表示 其定义为 sin sintttc 其调用形式为 sintcy 例如图 1 5 所示抽样函数的 MATLAB 源程序如下 program7 3 Sample function t 3 pi pi 100 3 pi ft sinc t pi plot t ft grid on 1 6 矩形脉冲信号矩形脉冲信号 矩形脉冲信号在 MATLAB 中用 rectpuls 函数来表示 其调用形式为 widthtrectpulsy 用以产生一个幅值为 1 宽度为 width 相对于 t 0 点左右对称的矩形波信号 该函数的横 坐标范围由向量 t 决定 是以 t 0 为中心向左右各展开 width 2 的范围 width 的默认值为 1 例如图 1 6 所示以 t 2T 即02 Tt 为对称中心的矩形脉冲信号的 MATLAB 源程序 如下 取 T 1 program7 4 Rectangular pulse signal t 0 0 001 4 T 1 ft rectpuls t 2 T 2 T plot t ft grid on axis 0 4 0 5 1 5 图 1 5 抽样函数 图 1 6 矩形波信号 周期性矩形波 方波 信号在 MATLAB 中用 square 函数来表示 其调用形式为 y square t DUTY 用以产生一个周期为 2 幅值为1 的周期性方波信号 其中的DUTY参数表示占空比 duty cycle 即在信号的一个周期中正值所占的百分比 例如图 1 7 所示频率为 30Hz 的周期性 方波信号的 MATLAB 源程序如下 program1 7 Periodic rectangular pulse signal t 0 0625 0 0001 0 0625 y square 2 pi 30 t 75 DUTY 75 percent plot t y axis 0 0625 0 0625 1 5 1 5 grid on 1 7 三角波脉冲信号三角波脉冲信号 三角波脉冲信号在 MATLAB 中用 tripuls 函数来表示 其调用形式为 skewwidthttripulsy 用以产生一个最大幅度为 1 宽度为 width 斜度为 skew 的三角波信号 该函数的很坐标范 围由向量 t 决定 是以 t 0 为中心向左右各展开 width 2 的范围 斜度skew是一个介于 1 和 1 之间的值 它表示最大幅度 1 出现所对应的横坐标位置 比如0 skew表示一个左右对称 的三角波信号 最大幅度 1 出现在0 t处 一般地 最大幅度 1 出现在skewwidtht 2 的横坐标位置 例如图 1 8 所示三角的 MATLAB 源程序如下 program7 6 Triangular pulse signal t 3 0 001 3 ft tripuls t 4 0 5 plot t ft grid on axis 3 3 0 5 1 5 图 1 7 周期性方波信号 图 1 8 三角波信号 周期性方波信号在 MATLAB 中用 sawtooth 函数来表示 其调用形式为 WIDTHtsawtoothy 用以产生一个周期为 2 最大幅度为 1 最小幅度为 1 的周期性方波信号 锯齿波 信号 其中的WIDTH参数表示最大幅度出现的位置 在一个周期内 信号从0 t到 2 WIDTH时函数值是从 1 到 1 线性增加的 而从 2 WIDTH到 2时函数值又是从 1 到 1 线性递减的 在其他周期内依次类推 例如图 1 9 所示的周期性三角波信号的 MATLAB 源程序如下 program1 9 Periodic triangular pulse signal t 5 pi pi 10 5 pi x sawtooth t 0 5 plot t x axis 16 16 1 5 1 5 grid on 1 8 一般周期性脉冲信号一般周期性脉冲信号 一般周期性脉冲信号在 MATLAB 中用 pulstran 函数来表示 其调用形式为 funcdtpulstrany 该函数基于一个名为 func 的连续函数并以之为一个周期 从而产生一串周期性的连续函数 func 函数可自定义 该 pulstran 函数的 横坐标范围由向量 t 指定 而向量 d 用于指定周 期性的偏移量 即各个周期的中心点 这样这个 func 函数会被计算 length d 次 并且整 个 pulstran 函数的返回值实际上就相当于 2 1 dtfuncdtfuncy 从而实现一个周期性脉冲信号的产生 Pulstran 函数的更一般的调用形式为 2 1 ppfuncdtpulstrany 其中的 p1 p2 为需要传送给 func 函数的额外输入参数值 除时间变量 t 之外 如上述的 Rectpuls 函数需要 width 这个额外参数 tripuls 函数需要 width 和 skew 这两个额外参数 即 整个 pulstran 函数的返回值实际上相当于 2 1 2 1 1 1 ppdtfuncppdtfuncy 例如图 1 10 所示周期性矩形脉冲信号和周期性三角波脉冲信号的 MATLAB 源程序如 下 program7 8 Periodic pulse generator T 0 1 1E3 1 1kHz sample freq for 1 sec D 0 1 3 1 3Hz repetition freq Y pulstran T D rectpuls 0 1 figure 1 plot T Y grid on axis 0 1 0 1 1 1 T 0 1 1E3 1 1kHz sample freq for 1sec D 0 1 3 1 3Hz repetition freq Y pulstran T D tripuls 0 1 1 figure 2 plot T Y grid on axis 0 1 0 1 1 图 1 10 周期性矩形脉冲信号和三角波脉冲信号 2 连续信号的相加 相乘 时移 反转和尺度变换等基本运算连续信号的相加 相乘 时移 反转和尺度变换等基本运算 1 两个连续信号的相加 在 MATLAB 中要实现两个连续信号 f1 t f2 t 的相加 可用如下语句 x symadd f1 f2 或 x f1 f2 x t f1 t f2 t 2 两个连续信号的相乘 在 MATLAB 中要实现两个连续信号 f1 t f2 t 的相乘 可用如下语句 x symmul f1 f2 或 x f1 f2 x t f1 t f2 t 3 连续信号的平移 要实现连续信号 f t 向右平移 t0 MATLAB 语句格式为 x subs f t t t0 x t f t t0 4 连续信号的反转 对一个信号 x t 的反褶运算在数学上表示为 y t x t 使用 MATLAB 内部函数 fliplr 来实现信号的反褶运算 其用法如下 y fliplr x 其中 x 为原信号 x t 而 y 则为 x 的时域反褶 而翻转后的信号的坐标则可由 fliplr t 得到 5 连续信号的尺度变换 要实现连续信号 f t 的尺度变换 MATLAB 语句格式为 x subs f t a t x t f at 要实现连续信号 f t 的平移 尺度变换的综合 运算 MATLAB 语句格式为 x subs f t a t b x t f at b 例例 1 信号 f1 t f2 t 如图 1 11 a b 所示 编 制一个 m文件 绘出 f1 t e 0 5t u t t 2 f2 t sin 5 t u t u t 2 f1 2t 1 f1 t f2 t 1 的 波形 图 1 12 解 实现所要求运算的 m文件如下 syms t f1 sym exp 0 5 t heaviside t heaviside t 2 f2 sym sin 5 pi t heaviside t heaviside t 2 subplot 2 2 1 ezplot f1 title f1 subplot 2 2 2 ezplot f2 title f2 f3 subs f1 t 2 t 1 subplot 2 2 3 ezplot f3 title f3 f4 f1 subs f2 t t 1 subplot 2 2 4 ezplot f4 title f4 运算结果如图 1 11 所示 其中 图 1 11 a b c d 分别为 f1 t f2 t f1 t 1 f1 t f2 t 1 的波形 例 对图 1 12 所示的三角波 tf 利用 MATLAB 画出 2 tf和 22 tf 的波形的程序如下 program7 13 Changed triangular pulse signal t 3 0 001 3 ft1 tripuls 2 t 4 0 5 图 1 11 subplot 2 1 1 plot t ft1 title f 2t grid on ft2 tripuls 2 2 t 4 0 5 subplot 2 1 2 plot t ft2 title f 2 2t grid on 程序运行结果如图 1 12 所示 6 连续信号的微分与积分 连续信号的微分可以用上述的 diff 函数 来近似计算 例如 y sin 2 x 2xcos 2 x 可由下列 MATLAB 语句来近似实现 h 0 001 x 0 h pi y diff sin x 2 h 连续信号的定积分可由 MATLAB 中的 quad 函数 或 quad8 函数 来实现 其调用形式为 犬的 function name a b 其中 function 那么为被积函数名 m文件名 a 和 b 为指定的积分区间 例如 对于图 1 8 所示的三角波 f t 要求利用 MATLAB 画出 dt tdf 和 dtf t 的波形 为了便于利用 quad 函数来计算信号的积分 将图 6 所示的三角波写成 MATLAB 的函数 函数名为 functri 相应的 m文件名为 functri m 程序如下 function yt functri t yt tripuls t 4 0 5 然后利用 diff 和 quad 函数 并调用自编函数 functri 即可实现三角波信号 f t 的微分 和积分 源程序如下 program7 14 Differentiation of triangular signal h 0 001 t 3 h 3 y1 diff functri t 1 h figure 1 plot t 1 length t 1 y1 title df t dt grid on program7 14 Integration of triangular signal t 3 0 1 3 for x 1 length t y2 x quad functri 3 t x end figure 2 plot t y2 axis 3 3 0 5 2 5 title Integral of f t grid on 三三 实验内容与步骤实验内容与步骤 1 用MATLAB画出下列信号的波形 a 单位阶跃信号单位阶跃信号 u t b 单位冲激信号单位冲激信号 t 2 用基本信号画出图1 14中的信号 t 1t f 02 2 4 46 t 2t f 02 2 4 463 t 3t f 02 4 46 图 1 14 3 用MATALB画出图1 15所示信号 其中 K 10 A 5 4 试用 Matlab 绘制出如下连续时间信号的时域波形 并观察信号是否为周期信号 若 是周期信号 周期是多少 a 2sin sin 2 2 sin 3 ttttf b 5sin 4cos 2 sin ttttf c 2cos 2 sin tttf 四四 实验报告要求实验报告要求 1 实验目的 2 实验内容与步骤 MATLAB 语言编程完成序列的表示及运算 并附上仿真后波形 3 简要回答思考题 4 记录调试运行情况及所遇问题的解决方法 1 tf K 0 t 2 t 2 tf 0123 L A 2 t 图 1 15 实验二实验二 连续时间系统的时域分析连续时间系统的时域分析 一 一 实验目的实验目的 1 掌握用Matlab进行卷积运算的数值方法和解析方法 加深对卷积积分的理解 2 学习利用Matlab实现LTI系统的冲激响应 阶跃响应和零状态响应 二 原理说明 二 原理说明 1 卷积的计算 卷积的计算 借助MATLAB的内部函数conv 可以很容易地完成两个信号的卷积积分运算 其语法为 y conv x h 其中x和h分别是两个作卷积运算的信号 y为卷积结果 为了正确地运用这个函数计算卷积 这里有必要对conv x h 做一个详细说明 conv x h 函数实际上是完成两个多项式的乘法运算 例如 两个多项式p1和p2分别为 432 23 1 sssp 和 1234 23 2 sssp 这两个多项式在MATLAB中是用它们的系数构成一个行向量行向量来表示的 如果用x来表示多项式 p1 h表示多项式p2 则x和h分别为 x 1 2 3 4 h 4 3 2 1 在MATLAB命令窗口依次键入 x 1 2 3 4 h 4 3 2 1 y conv x h 在屏幕上得到显示结果 y 4 11 20 30 20 11 4 这表明 多项式p1和p2的乘积为 411203020114 23456 3 ssssssp 正如前所述 用MATLAB处理连续时间信号时 独立时间变量t的变化步长应该是很小的 假定用符号dt表示时间变化步长 那么 用函数conv 作两个信号的卷积积分时 应该在这 个函数之前乘以时间步长方能得到正确的结果 也就是说 正确的语句形式应为 y dt conv x h 对于定义在不同时间段的两个时限信号x t t0 t t1 和h t t2 t t3 如果用y t 来表示它们的卷积结果 则y t 的持续时间范围要比x t 或h t 要长 其时间范 围为t0 t2 t t1 t3 这个特点很重要 利用这个特点 在处理信号在时间上的位置时 可以很容易地将信号的函数值与时间轴的位置和长度关系保持一致性 由于MATLAB运算的特点 两个连续信号f1 t f2 t 的卷积f t f1 t f2 t 用MATLAB 实现的过程应为 1 将连续信号f1 t f2 t 以时间间隔 进行取样 得离散序列f1 k f2 k 2 构造f1 k f2 k 与相对应的时间向量k1和k2 3 调用conv 函数计算卷积积分f t 的近似向量f k 4 构造f k 对应的时间向量k 下面是利用MATLAB实现连续信号卷积运算的通用函数sconv 它在计算出卷积积分近 似值的同时 还绘出f t 的波形图 function f k sconv f1 f2 k1 k2 p 计算连续信号卷积积分f t f1 t f2 t f 卷积积分f t 对应的非零值向量 k f t 的对应时间向量 f1 f2 f1 t f2 t 的非零样值向量 k1 k2 f1 t f2 t 的对应时间向量 p 取样时间间隔 f conv f1 f2 计算序列f1 f2的卷积和f f f p k0 k1 1 k2 1 计算序列f非零样值的起点位置 k3 length f1 length f2 2 计算卷积和f的非零样值的宽度 k k0 p k3 p 确定卷积和f非零样值的时间向量 subplot 2 2 1 plot k1 f1 title f1 t xlabel t ylabel f1 t subplot 2 2 2 plot k2 f2 title f2 t xlabel t ylabel f2 t subplot 2 2 3 plot k f 画出卷积f t 的波形 title f t f1 t f2 t xlabel t ylabel f t h get gca position h 3 2 5 h 3 set gca position h 将第三个子图的横坐标扩展为原来的2 5倍 例例1 已知f1 t e t u t u t 2 f 2 t u t u t 3 编制一个m文件 绘出f1 t f2 t 和f t f1 t f2 t 的波形 解 实现所要求运算的m文件如下 运算结果如图所示 p 0 01 k1 0 p 2 f1 exp k1 k2 0 p 3 f2 ones 1 length k2 f k sconv f1 f2 k1 k2 p 例题2 根据给定的两个连续时间信号x t t u t u t 1 和h t u t u t 1 编写 程序 完成这两个信号的卷积运算 并绘制它们的波形图 范例程序如下 Program1 6 This program computes the convolution of two continuou time signals clear close all t0 2 t1 4 dt 0 01 t t0 dt t1 x u t u t 1 h t u t u t 1 y dt conv x h Compute the convolution of x t and h t subplot 221 plot t x grid on title Signal x t axis t0 t1 0 2 1 2 subplot 222 plot t h grid on title Signal h t axis t0 t1 0 2 1 2 subplot 212 t 2 t0 dt 2 t1 Again specify the time range to be suitable to the convolution of x and h plot t y grid on title The convolution of x t and h t axis 2 t0 2 t1 0 1 0 6 xlabel Time t sec 在有些时候 做卷积和运算的两个序列中 可能有一个序列或者两个序列都非常长 甚 至是无限长 MATLAB处理这样的序列时 总是把它看作是一个有限长序列 具体长度由编程 者确定 实际上 在信号与系统分析中所遇到的无限长序列 通常都是满足绝对可和或绝对 可积条件的信号 因此 对信号采取这种截短处理尽管存在误差 但是通过选择合理的信号 长度 这种误差是能够减小到可以接受的程度的 若这样的一个无限长序列可以用一个数学 表达式表示的话 那么 它的长度可以由编程者通过指定时间变量n的范围来确定 2 连续系统的冲激响应 阶跃响应和零状态响应 连续系统的冲激响应 阶跃响应和零状态响应 LTI系统当输入为冲激信号 t 时产生的零状态响应为系统的冲激响应 用h t 表示 若输入为单位阶跃信号u t 时产生的零状态响应为系统的阶跃响应 记为g t 对LTI连续 系统 设其输入信号为f t 冲激响应为h t 零状态响应为y t 则有 y tf th t 设描述连续系统的微分方程为 00 NM ij ij ij a ytb ft 则可以用向量a和b来表示该系统 即 110 NN aaaa a 110 MM bbbb b 注意 在用向量来表示微分方程描述的连续系统时 向量a和b的元素一定要以微分方程时间 求导的降幂次序来排列 且缺项用0来补齐 如对微分方程 2 2 6 y ty ty tf t 则表示该系统的对应向量为 a 2 3 6 b 1 而对微分方程 3 2 y ty ty tftf t 则表示该系统的对应向量应为 a 1 3 2 b 1 0 1 MATLAB的内部函数impulse step initial lsim 可以用来计算并绘制连续 时间LTI系统的单位冲激响应 单位阶跃响应 零输入响应单位冲激响应 单位阶跃响应 零输入响应和任意信号作用于系统的零状态零状态 响应响应 这些函数的用法描述如下 1 impulse 函数 函数 函数impulse 将绘出由向量a和b表示的连续系统在指定时间内的冲激响应h t 的时域波 形图 并能求出指定时间范围内冲激响应的数值解 impulse 函数有如下几种调用格式 1 impulse b a 该调用格式以默认方式绘出向量a和b定义的连续系统的冲激响应的时域波形 运行如下Matalb命令 a 1 3 2 b 1 0 1 impulse b a 2 impulse b a t 该调用格式绘出向量a和b定义的连续系统在0 t时间范围内冲激响应的时域波形 对上 例 运行如下命令 impulse b a 10 则绘出系统在0 10秒范围内冲激响应的时域波形 3 impulse b a t1 p t2 该调用格式绘出向量a和b定义的连续系统在t1 t2时间范围内 且以时间间隔p均匀取样 的冲激响应的时域波形 对上例 运行如下命令 impulse b a 1 0 1 2 则绘出系统在1 2秒范围内 且以时间间隔0 1秒均匀取样的冲激响应的时域波形 4 y impulse b a t1 p t2 该调用格式并不绘出系统的冲激响应波形 而是求出向量a和b定义的连续系统在t1 t2 时间 范围内 且以时间间隔p均匀取样的冲激响应的数值解 如下命令 y impulse b a 0 0 2 2 3 2 y ty ty tftf t 2 step 函数 函数 函数step 将绘出由向量a和b定义的连续系统的阶跃响应g t 在指定时间范围内的波形图 并能求出其数值解 和impulse 函数一样 step 函数也有四种调用格式 step b a step b a t step b a t1 p t2 y step b a t1 p t2 上述调用格式的功能与impulse 函数完全相同 3 Lsim 函数 函数 Lsim b a x t 用来计算由b和a表示的LTI系统在输入信号x作用下的零状态响应 其中t为指定的时间变化范围 x为输入信号 它们的长度应该是相同的 三 实验内容及步骤三 实验内容及步骤 实验前 必须首先阅读本实验原理 读懂所给出的全部范例程序 实验开始时 先在计 算机上运行这些范例程序 观察所得到的信号的波形图 并结合范例程序应该完成的工作 进一步分析程序中各个语句的作用 从而真正理解这些程序 1 编写程序Q2 1 完成 1 tf 与 2 tf 两函数的卷积运算 y 3 0000 1 7141 0 9060 0 4083 0 1108 0 0591 0 1488 0 1891 0 2000 2 编写程序Q2 2 完成 1 tf 与 2 tf 两函数的卷积运算 3 编写程序Q2 3 利用程序Q2 1 验证卷积的相关性质 a 验证性质 txttx b 验证性质 00 ttxtttx 4 编写程序 Q2 4 某线性时不变系统的方程为 8 2 6 5 tftftytyty a 系统的冲激响应和阶跃响应 b 输入 t f te u t 求系统的零状态响应 tyzs 四 思考题目四 思考题目 1 不断改变程序Q2 1和Q2 2的取样时间间隔的取值 比较不同取样时间间隔时卷积的结果 五 五 实验报告要求实验报告要求 1 实验目的 2 实验内容与步骤 用MATLAB语言完成编程 并附上仿真结果 3 简要回答思考题 4 记录调试运行情况及所遇问题的解决方法 实验三 连续时间信号的频域分析 一 实验目的一 实验目的 1 掌握连续时间周期信号的傅里叶级数的物理意义和分析方法 2 观察截短傅里叶级数而产生的 Gibbs 现象 了解其特点以及产生的原因 3 掌握连续时间傅里叶变换的分析方法及其物理意义 4 掌握各种典型的连续时间非周期信号的频谱特征以及傅里叶变换的主要性质 5 学习掌握利用 MATLAB 语言编写计算 CTFS CTFT 和 DTFT 的仿真程序 并能利用这些 程序对一些典型信号进行频谱分析 验证 CTFT DTFT 的若干重要性质 二 实验原理二 实验原理 1 连续时间周期信号的傅里叶级数 连续时间周期信号的傅里叶级数 CTFS 分析分析 任何一个周期为 T1的正弦周期信号 只要满足狄利克利狄利克利条件 就可以展开成傅里叶级 数 其中三角傅里叶级数三角傅里叶级数为 1 000 sin cos k kk tkbtkaatx 3 1 或 1 00 cos k kk tkcatx 3 2 其中 1 0 2 T 称为信号的基本基本频率频率 Fundamental frequency kk baa 和 0 分别是 信号 tx的直流直流分量分量 余余弦分量弦分量幅幅度度和正弦分量正弦分量幅幅度度 kk c 为合并同频率项之后各正弦 谐波分量的幅度和初相位 它们都是频率 0 k的函数 绘制出它们与 0 k之间的图像 称为 信号的频谱图频谱图 简称 频谱频谱 k c 0 k图像为幅幅度度谱谱 k 0 k图像为相位相位谱谱 三角形式傅里叶级数表明 如果一个周期信号 x t 满足狄里克利条件 那么 它就 可以被看作是由很多不同频率的互为谐谐波波关关系系 harmonically related 的正弦信号所组成 其中每一个不同频率的正弦信号称为正弦正弦谐谐波分量波分量 Sinusoid component 其幅幅度度 amplitude 为 k c 也可以反过来理解三角傅里叶级数 用无限多个正弦谐波分量可以合 成一个任意的非正弦周期信号 指数形指数形式式的的傅里叶级傅里叶级数数为 k tjk ke atx 0 3 3 其中 k a为指数形式的傅里叶级数的系数 按如下公式计算 2 2 1 1 1 0 1 T T tjk k dtetx T a 3 4 指数形式的傅里叶级数告诉我们 如果一个周期信号 x t 满足狄里克利条件 那么 它就可以被看作是由很多不同频率的互为谐波关系 harmonically related 的周期复指数 信号所组成 其中每一个不同频率的周期复指数信号称为基本频率分量 其复幅度 complex amplitude 为 k a 这里 复幅度 complex amplitude 指的是 k a通常是复数 上面的傅里叶级数的合成式说明 我们可以用无穷多个不同频率的周期复指数信号来合 成任意一个周期信号 然而 用计算机 或任何其它设备 合成一个周期信号 显然不可能 做到用无限多个谐波来合成 只能取这些有限个谐波分量来近似合成 假设谐波项数为 N 则上面的和成式为 N Nk tjk ke atx 0 3 5 显然 N 越大 所选项数越多 有限项级数合成的结果越逼近原信号 x t 本实验可以 比较直观地了解傅里叶级数的物理意义 并观察到级数中各频率分量对波形的影响包括 Gibbs 现象 即信号在不连续点附近存在一个幅度大约为 9 的过冲 且所选谐波次数越 多 过冲点越向不连续点靠近 这一现象在观察周期矩形波信号和周期锯齿波信号时可以看 得很清楚 2 连续时间信号 连续时间信号傅里叶傅里叶变换变换 CTFT 傅里叶变换在信号分析中具有非常重要的意义 它主要是用来进行信号的频谱分析的 傅里叶变换和其逆变换定义如下 dtetxjX tj 3 6 dejXtx tj 2 1 3 7 连续时间傅里叶变换主要用来描述连续时间非周期信号的频谱 按照教材中的说法 任 意非周期信号 如果满足狄里克利条件 那么 它可以被看作是由无穷多个不同频率 这些 频率都是非常的接近 的周期复指数信号 e j t的线性组合构成的 每个频率所对应的周期复 指数信号 e j t称为频率分量 frequency component 其相对幅度为对应频率的 X j 之 值 其相位为对应频率的 X j 的相位 X j 通常为关于的复函数 可以按照复数的极坐标表示方法表示为 X j X j e j X j 其中 X j 称为 x t 的幅度谱 而 X j 则称为 x t 的相位谱 给定一个连续时间非周期信号 x t 它的频谱也是连续且非周期的 对于连续时间周 期信号 也可以用傅里变换来表示其频谱 其特点是 连续时间周期信号的傅里叶变换时有 冲激序列构成的 是离散的 这是连续时间周期信号的傅里叶变换的基本特征 3 离散时间序列的傅里叶变换 离散时间序列的傅里叶变换 DTFT 给定一个非周期离散时间序列 x n 它的傅里叶变换定义为 n njj enxeX 3 8 其反变换定义为 deeXnx njj 2 1 3 3 式 3 8 称为离散时间傅里叶正变换 式 3 9 称为离散时间傅里叶反变换 由式 3 9 可以 看出 一个非周期离散时间序列 总是可以被看作是由无穷多个不同频率的加权的基本频率 分量 e j n组合而成的 对序列中的频率为 的频率分量来说 其权为 X ej 通常是复数 也可以将它表示为 X e j X ej ej X ej X e j 称为序列的幅度谱 而 X ej 称为序列的相位谱 它们都是频率 的周期函数 4 连续周期信号的 连续周期信号的傅里叶级傅里叶级数数 CTFS 的的 MATLAB 实实现现 4 1 傅里叶级傅里叶级数的数的 MATLAB 计算计算 设周期信号 x t 的基本周期为 T1 且满足狄里克利条件 则其傅里叶级数的系数可由 式 3 4 计算得到 式 3 4 重写如下 2 2 1 1 1 0 1 T T tjk k dtetx T a 基本频率为 1 0 2 T 对周期信号进行分析时 我们往往只需对其在一个周期内进行分析即可 通常选择主主周周 期 期 Principle period 假定 x1 t 是 x t 中的主周期 则 2 2 1 1 1 1 0 1 T T tjk k dtetx T a 计算机不能计算无穷多个系数 所以我们假设需要计算的谐波次数为 N 则总的系数个 数为 2N 1 个 在确定了时间范围和时间变化的步长即 T1和 dt 之后 对某一个系数 上述 系数的积分公式可以近似为 n tjk n T T tjk k Tdtetxdtetx T a 1 2 2 1 1 1 0 1 1 0 121 02010 Tdteeetxtxtx M tjktjktjk M LL 对于全部需要的 2N 1 个系数 上面的计算可以按照矩阵运算实现 MATLAB 实现系数计 算的程序如下 dt 0 01 T 2 t T 2 dt T 2 w0 2 pi T x1 input Type in the periodic signal x t over one period x1 t N input Type in the number N k N N L 2 N 1 ak x1 exp j k w0 t dt T 需需要强调的是 时间变量的变化步长 dt 的大小对傅里叶级数系数的计算精度的影响非 常大 dt 越小 精度越高 但是 计算机计算所花的时间越长 例题例题 3 1 给定一个周期为 T1 2s 的连续时间周期方波信号 如图所示 其一个周期内的 数学表达式为 k 10 10 ak j k sin k eps pi 2 k eps pi The expression of ak ak Columns 1 through 4 0 0000 0 0 0354i 0 0000 0 0 0455i Columns 5 through 8 0 0000 0 0 0637i 0 0000 0 0 1061i Columns 9 through 12 0 0000 0 0 3183i 0 5000 0 0 3183i Columns 13 through 16 0 0000 0 0 1061i 0 0000 0 0 0637i Columns 17 through 20 0 0000 0 0 0455i 0 0000 0 0 0354i Co