数字信号处理讲义
3. 编写MATLAB程序:
MATLAB 的程序以 .M 结尾,你可以使用MATLAB窗口中File--?New?M--file 的菜单命令来建立一个.m空白文件,编写完成后,你保存一下,然后可以在MATLAB窗口中敲此文件名执行该文件。 函数编写 script编写
4. 常用的MATLAB命令归类: 通用命令:
Help 在线帮助 Path 路径设置 What 列出当前路径下的.m文件 Clc 清除当前命令窗口命令 Quit 退出MATLAB
Demo 例程演示 Who 列出当前变量 Clear 清除所有变量 Clf 清除当前图形 运算符:
加法: + 点乘: .* 点除: .\\
减法: — 指数: .^ 乘法: * 除法: \\ 关系运算符:
小于 < 大于 > 小于等于 <= 大于等于 >= 等于 == 不等于 ~ = 基本矩阵
zeros 零阵 ones 1阵
2
数字信号处理讲义
信号运算 abs angle real imag conv fft
ifft
图形函数 figure axis hold text gtext plot
subplot title
xlabel ylabel grid stem bar polar
取模值 相角 实部 虚部 卷积
快速傅立叶变换
快速傅立叶反变换
生成一图框 设置坐标轴 保持原图 在图上标记文字
通过鼠标点击方式在图上标记文字
画图
子图 添加图名
给X轴增加文本标注 给Y轴增加文本标注 设置网格线
离散序列数据杆状图 条形图
极坐标
3
数字信号处理讲义
实验二 离散时间信号分析
实验目的:
通过Matlab实现基本信号的表示和运算。理解信号的构成和性质。 实验任务:
1. 学习使用基本信号在Matlab 中的基本表示方法。
2. 了解本实验中的扩展函数的结构和组成,实现自己设计的扩展函数的编程:
(1)写一新的卷积函数conv_m,它可求出带下标的序列卷积。
(2)修改给出的evenodd函数,使他能接受任意序列并把它分解成共轭对称分量和共轭反对称分量。
3. 掌握复杂信号的表示方法;并对复杂信号进行编程实现。
(1)产生下列序列并绘出离散图:
(a). x(n)=2δ(n+2)-δ(n-4) -5≤n≤5 (b) x(n)=n[u(n)-u(n-10)]+10e
-0.3(n-10)
[u(n-10)-u(n-2)] 0≤n≤20
(c) x(n)=cos (0.04πn)+0.2w(n) 0≤n≤50
其中w(n)是均值为零、方差为1的白噪声序列
x(n)=[x1 x1 x1 x1],其中x1=[5 4 3 2 1] (d) ~ (e) 已知x(n)=u(n)-u(n-10),要求将它分解成奇偶序列。
(2) 用Matlab产生一矩形脉冲串,连续时间为2s,脉冲个数为10,并绘制其波形图。
4. 掌握复序列x(n)的实部、虚部、幅值和相位离散图,并编程实现。 产生复信号: x(n)=e(-0.1+j0.3)n -10≤n≤10 并画出复序列x(n)的实部、虚部、幅值和相位离散图。
4
数字信号处理讲义
一.离散信号
在数字信号处理(DSP)中,所有的信号都是离散(时间)信号,因此首先应解决在MATLAB中如何表示离散信号。
设一模拟信号经A/D变换后,得到序列信号
x(n)={x(n)}={ ?, x (-1), x ( 0 ) , x (1 ),?}
由于MATLAB对下标的约定为从1开始递增,因此要表示x(n),一般应采用两个矢量,如:
n=[-3,-2,-1,0,1,2,3,4,5] y=[1,-1,3,2,0,4,5,2,1]
这表示了一个含9个采样点的矢量:y(n)={x(-3), x (-2) , x (-1) , x (0) ,x (1 ) ,? x (5) }。
通常情况下,序列值从x(0)开始,因此一个N点序列x(n)={x (0) ,x (1) ,? ,x (N-1)}可简单地表示成
y=[x (0), x (1) ,? , x (N-1)]
这时y的下标为1~N。
二.基本信号表示
1.单位取样序列
?(n)??n?0?1
0 n?0?这一函数可利用MATLAB的zeros函数实现:
x=zeros(1,N); x(1)=1
还可以借助于关系操作符实现:
n=1:N;
5
数字信号处理讲义
x=[n==1];
如要产生
n1?n?n0?0??(n?n0)??1 n?n0 (n1?n2)
?0 n0?n?n2? 则可采用MATLAB实现:
2.单位阶跃序列
n=n1:n2; x=[(n-n0)==0];
n?0?1 u(n)??0 n?0?这一函数可利用MATLAB的ones函数实现:
x=ones(1,N);
还借助于关系操作符“>=”来实现。如要产生在n1≤n0≤n2上的单位阶跃序列
?1 n?n0 u(n?n0)??0 n?n0?则可采用MATLAB实现:
n=n1:n2; x=[(n-n0)>=0];
3.实指数序列
x(n)=an ?n;a?R
采用MATLAB实现:
n=0:N-1;
6