【练习】matlab信号产生
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二篇基于MATLAB下的软件实验
目录
实验一基本信号的产生 (35)
实验二时域抽样与频域抽样 (40)
实验三连续系统分析 (43)
实验一 基本信号的产生
一、实验目的
学习使用MATLAB 产生基本信号、绘制信号波形、实现信号的基本运算,为信号分析和系统设计奠定基础。
二、实验原理
MATLAB 提供了许多函数用于产生常用的基本信号:如阶跃信号、脉冲信号、指数信号、正弦信号和周期矩形波信号等.这些基本信号是信号处理的基础。
(一 ) 基本信号的产生: 1. 连续阶跃信号的产生
产生阶跃信号的MATLAB 程序如下:
t= —2: 0。
02: 6; x=(t 〉=0); plot(t ,x );
axis ([—2,6,0,1.2]);
图一 连续阶跃信号 2. 连续指数信号的产生
产生随时间衰减的指数信号的MATLAB 程序如下:
t = 0: 0.001: 5; x = 2*exp (—1*t); plot (t ,x );
图二 连续指数信号
3. 连续正弦信号的产生
利用MATLAB 提供的函数cos 和sin 可产生正弦和余弦信号。
产生一个幅度为2, 频率为4Hz , 相位为p/6的正弦信号的MATLAB 程序如下:
f0=4;
w0=2*pi *f0;
t = 0: 0。
001: 1;
x = 2*sin (w0*t+ pi/6);
plot(t ,x );; 图三 连续正弦信号
4.连续矩形脉冲信号的产生
函数rectpulse (t,w)可产生高度为1、宽度为w 、关于t=0对称的矩形脉冲信号。
产生高度为1、宽度为4、延时2秒的矩形脉冲信号的MATLAB 程序如下:
t=-2: 0.02: 6;
x=rectpuls (t-2,4);
plot (t,x ); 图四 连续矩形脉冲信号
5。
连续周期矩形波信号的产生
函数square (w0*t)产生基本频率为w0 (周期T=2p/w0)的周期矩形波信号。
函数square(w0*t, DUTY )产生基本频率为w0 (周期T=2p/w0)、占空比DUTY= t/T*100的周期矩形波.
τ为一个周期中信号为正的时间长度.τ=T/2,DUTY=50,square(w0*t , 50)等同
于square (w0*t)。
产生一个幅度为1, 基频为2Hz ,占空比为50%的周期方波的MATLAB 程序如下:
f0=2; 图五 连续周期矩形波信号 t = 0:.0001:2.5; w0=2*pi*f0;
y = square (w0*t , 50); %duty cycle=50% plot(t ,y); axis ([0,2.5,-1。
5,1.5]);
6. 连续抽样信号的产生
可使用函数sinc(x)计算抽样信号, 函数sinc (x )的定义为 。
产生信号的MATLAB 程序如下:
t= -10:1/500:10;
x=sinc(t/pi )
plot (t ,x ); 图六 连续抽样信号
7.单位脉冲序列的产生
函数zeros (1,n) 可以生成单位脉冲序列。
函数zeros (1,n)产生1行n 列的由0组成的矩阵。
产生成单位脉冲序列的MATLAB 程序如下: k= —4: 20;
x=[zeros (1,7),1,zeros(1,17)];stem(k ,x ) 图七 单位脉冲序列
8.单位阶跃序列的产生
函数ones(1,n) 可以生成单位阶跃序列。
函数ones (1,n)产生1行n 列的由1组成的矩阵。
产生单位阶跃序列的MATLAB 程序如下:
k= -4:20;
x=[zeros (1,7),ones (1,18)];
图八 单位阶跃序列stem (k ,x)
9. 指数序列的产生
产生离散序列的MATLAB 程序如下:
k = —5:15;
x = 0.3*(1/2).^k; stem (k,x );
图九 指数序列
10.正弦序列的产生
产生正弦序列的MATLAB 程序如下:
k=-10:10; omega=pi/3;
x = 0。
5*sin(omega*k+ pi/5); stem(k ,
图十一 正弦序列
11.离散周期矩形波序列的产生 产生幅度为1、基频rad 、占空比为50%的周期方波的MATLAB 程序如下: omega=pi/4; k=—10:10;
x = square (omega *k,50);
stem(k ,x); 图十二 离散周期矩形波序列
12。
白噪声序列的产生
白噪声序列在信号处理中是常用的序列。
函数rand 可产生在[0,1]区间均匀分布的白噪声序列, 函数randn 可产生均值为0,方差为1的高斯分布白噪声。
N=20;
k=0:N-1;
x=rand (1,N) stem (k,x ); 图十三 白噪声序列
(二) 序列的基本运算
表一 序列基本运算表
-10
-8
-6
-4
-2
2
4
6
8
10
-1-0.8-0.6-0.4-0.200.20.40.60.81
2
4
6
8
10
12
14
16
18
20
00.1
0.20.30.40.50.60.70.80.91
离散序列:
(1)计算离散卷积和 : (2)计算离散自相关函数:
x=[1,2,1,1,0,—3]; h=[1,—1,1];
%计算离散卷积和
y=conv(x,h ); subplot (2,1,1); stem([0:length(y )-1],y); title('y[k ]’);xlabel(' k ’);
%计算离散自相关函数 y=xcorr(x ,x ); subplot(2,1,2);
m=(length(y)—1)/2;
stem([—m :m],y ); title('Rxx [n ]');
xlabel ('n');
三、 实验思考题 1。
两个连续信号的卷积定义是什么?两个序列的卷积定义是什么?卷积的作用是什么?conv 函数只输出了卷积结果,没有输出对应的时间向量,如何使时间向量和卷积结果对应起来?
2。
两个连续信号的相关定义是什么?两个序列的相关定义是什么?相关的作用是什么? 3. 能够利用MATLAB 产生单位冲激信号吗? 4. 产生连续信号时,首先要定义时间向量t = 0:T:Tp 。
其中T 和Tp 是什么意思?
]
5,4,3,2,1,0;3,0,1,1,2,1[][=-=k k x ]
2,1,0;1,1,1[][=-=k k h ]
[*][][k h k x k y =∑∞
-∞
=+=
k xx n k x k x k R ]
[][][
实验二 时域抽样与频域抽样
一、 实验目的
1.加深理解连续时间信号的离散化过程中的数学概念和物理概念,掌握时域抽样定理的基本内容。
2.掌握由抽样序列重建原连续信号的基本原理与实现方法,理解其工程概念。
3.加深理解频谱离散化过程中的数学概念和物理概念,掌握频域抽样定理的基本内容。
二、 实验原理
时域抽样定理给出了连续信号抽样过程中信号不失真的约束条件:对于基带
信号,信号抽样频率fsam 大于等于2倍的信号最高频率fm ,即 fsam ≥ 2fm 。
时域抽样是把连续信号x(t )变成适于数字系统处理的离散信号x [k] ;信号重建是将离散信号x [k]转换为连续时间信号x(t)。
非周期离散信号的频谱是连续的周期谱.计算机在分析离散信号的频谱时,必须将其连续频谱离散化.频域抽样定理给出了连续频谱抽样过程中信号不失真的约束条件。
1. 信号的时域抽样
对连续信号x(t)以间隔T 抽样,得到的离散序列x [k]=x (kT )|t=kT 图一 连续信号抽样的离散序列
若x[k]=x(kT )|t=kT ,则信号x(t )与x[k ]的频谱之间存在: 其中:x (t )的频谱为X (j
),x [k ]的频谱为X (e j
)
可见,信号时域抽样导致信号频谱的周期化。
wsam=2p/T (rad/s)为抽样角
频率,fsam=1/T 为抽样频率。
数字角频率W 与模拟角频率w 的关系为:Ω=ωT
其中:x(t)的频谱为X(jw ),x [k]的频谱为X(ejW)
x (t )x [k ]
t
k 0T 2T 012
)e (j Ω
X ()∑∞-∞
=-=n n X T )(j 1sam ωω
用MATLAB 实现对信号
的抽样。
t0 = 0:0。
001:0。
1; x0 =cos (2*pi *20*t0);
plot (t0,x0,’r')
hold on %
信号最高频率fm 为20 Hz , %按100 Hz 抽样得到序列。
Fs = 100; t=0:1/Fs :0。
1; x=cos (2*pi *20*t );
stem (t ,x); hold off
title ('连续信号及其抽样信号') 图二 的抽样图形
2. 信号的频域抽样
非周期离散序列x [k ]的频谱X (e j Ω)是以2π为周期的连续函数。
频域抽样是将X (e j Ω)离散化以便于数值计算.
频域抽样与时域抽样形成对偶关系。
在[0,2π]内对X (e j Ω) 进行N 点均匀抽样,引起时域序列x [k ]以N 点为周期进行周期延拓.
频域抽样定理给出了频域抽样过程中时域不发生混叠的约束条件:
若序列x [k ]的长度L ,则应有N ≥L .
已知序列 , 对其频谱X (e j Ω)进行抽样,
分别取N =2,3,10,观察频域抽样造成的混叠现象。
x=[1,1,1]; L=3; N=256; omega=[0:N —1]*2*pi/N ;
X0=1+exp (-j *omega )+exp (—2*j *omega ); plot (omega 。
/pi ,abs(X0)); xlabel (’Omega/PI’); hold on
N=2; omegam=[0:N —1]*2*pi/N ;
Xk=1+exp (—j *omegam )+exp(—2*j *omegam );
)20π2cos()(t t x ⨯=
)20π2cos()(t t x ⨯=∑
∞-∞
=+=n nN k x k x ][][~}2,1,0 ;1 ,1 ,1{][==k k x
stem(omegam./pi,abs(Xk),’r’,'o');hold off
三、实验思考题:
1。
将语音信号转换为数字信号时,抽样频率一般应是多少?
2。
在时域抽样过程中,会出现哪些误差?如何克服或改善?
3. 在实际应用中,为何一般选取抽样频率f sam (3~5)f m?
4。
简述带通信号抽样和欠抽样的原理?
5。
如何选取被分析的连续信号的长度?
6。
增加抽样序列x[k]的长度,能否改善重建信号的质量?
7。
简述构造内插函数的基本原则和方法?
8。
抽样内插函数、阶梯内插函数、线性内插函数、升余弦内插函数各有什么特性?
实验三 连续系统分析
一、 实验目的
1.深刻理解连续时间系统的系统函数在分析连续系统的时域特性、频域特性及稳定性中的重要作用及意义,掌握根据系统函数的零极点设计简单的滤波器的方法。
2.掌握利用MATLAB 分析连续系统的时域响应、频响特性和零极点的基本方法.
二、 实验原理
MATLAB 提供了许多可用于分析线性时不变连续系统的函数,主要包含有系统函数、系统时域响应、系统频域响应等分析函数。
1. 连续系统的时域响应
连续时间LTI 系统可用如下的线性常系数微分方程来描述:
)
()( )()(01)1(1)(t y a t y a t y a t y a n n n n ++++--
)()( )()(01)1(1)(t x b t x b t x b t x b m m m m ++++=--
已知输入信号x (t )以及系统初始状态)0(,),0('),0()1(----n y y y ,就可以求出系统的响应.
MATLAB 提供了微分方程的数值计算的函数,可以计算上述n 阶微分方程描述的连续系统的响应,包括系统的单位冲激响应、单位阶跃响应、零输入响应、零状态响应和完全响应.
在调用MATLAB 函数时,需要利用连续系统对应的系数函数。
对微分方程
进行Laplace 变换即可得系统函数:
在MATLAB 中可使用向量和向量分别保存分母多项式和分子多项式的系数:
],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -=
这些系数均按s 的降幂直至s 0排列。
● 连续系统的单位冲激响应h (t )的计算
impulse(sys )计算并画出系统的冲激响应. 参数:sys 可由函数tf(b ,a)获得。
其中:
],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -=
h=impulse(sys, t ) 计算并画出系统在向量t 定义的区间上的冲激响
应, 向量h 保存对应区间的系统冲激响应的输出值。
已知描述某连续系统的微分方程:
)
(8)( '2)(6)( '5)("t x t x t y t y t y +=++
计算该系统的单位冲激响应h (t )。
a=[1,5,6]; b=[2,8]; sys=tf (b,a ); t=0:0。
1:10; h=impulse(sys ,t ); plot (h ); xlabel('t'); title ('h(t )')
程序运行结果如图 图一 程序运行结果:
● 连续系统的单位阶跃响应g (t )的计算
step(sys )计算并画出系统的阶跃响应。
参数:sys 可由函数tf(b,a )获得.其中:
],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -=
g=step(sys , t )
计算并画出系统在向量t 定义的区间上的阶跃响应,向量g 保存对应区间的系统阶跃响应的输出值。
● 连续系统的零状态响应y (t )的计算
lsim (sys , x , t ) 计算并画出系统的零状态响应。
参数: sys 可由函数tf(b ,a)获得 x 为输入信号
t 为定义的时间向量.
已知描述某连续系统的微分方程:)(8)( '2)(6)( '5)("t x t x t y t y t y +=++ 计算在输入)(e )(t u t x t -=为时系统的零状态响应.
a=[1,5,6]; b=[2,8];sys=tf(b,a); t=0:10/300:10; x=exp (-t );
y=lsim(sys ,x,t); plot(t ,y );
图二 程序运行结果: 2.连续系统的系统函数零极点分析
连续LTI 系统的系统函数H (s )可以表示为部分分式形式:
设n m ≤,且H (s )的极点pi 全部为单极点,则:
∑
=-=n
i i
i
p s k s H 1)( )()(1t u e k t h t p n
i i i ∑== 系统函数H (s )的极点pi 决定了冲激响应h (t )的基本形式,而零点和极点
共同确定了冲激响应h (t )的幅值ki 。
MATLAB 中提供了roots 函数计算系统的零极点,提供了pzmap 函数绘制连续系统的零极点分布图。
已知某连续系统的系统函数为:
1
221
32)(232+++++=s s s s s s H 计算其零极
点,画出分布图.
b=[2,3,1];a=[1,2,2,1]; z=roots(b ) p=roots (a ) sys=tf(b ,a );
pzmap(sys) 图三 系统函数零极点分布图
Real Axis
I m a g A x i s
3.连续系统的频率响应
若连续因果LTI 连续系统的系统函数H (s )的极点全部位于S 左半平面,则系统的频率响应可由H (s )求出,即
)(j j e )j ()()j (ωϕωωωH s H H s ===
MATLAB 中freqs 函数可以分析连续系统的频响,格式如下:
H=freqs(b ,a,w):
计算系统在指定频率点向量w 上的频响H ;w 为频率点向量. [H ,w ]=freqs(b,a ) :自动选取200个频率点计算频率响应.
已知某连续系统的系统函数为: )
1)(1(1)(2+++=s s s s H
分析系统的幅频率特性.
b=[1]; a=conv ([1,1],[1,1,1]); [H,w]=freqs(b,a);
plot (w ,abs(H)); xlabel (’Frequency(rad/s)’); ylabel(’Amplitude’);
title (’Magnitude response’); 图四 系统函数幅频特性
三、实验思考题
1. 系统函数的零极点对系统频率特性有何影响?
2. 对于因果稳定、实系数的低通、高通、带通、带阻滤波器,零极点分布有何特点?
3. 系统函数的零极点对系统冲激响应有何影响?
4. 若某因果系统不稳定,有哪些主要措施可使之稳定?
5. 如果出现零极点抵消的情况,对系统特性有什么影响?
6. 在工程实际中,系统函数的零极点有哪些主要应用?
7. 使用计算机分析连续系统,需要解决连续系统离散化的问题,怎样离散化?
8. 连续系统响应的计算机求解可以分为哪些方法?
Frequency(rad/s)
A m p l i t u d e
Magnitude response。