您好,欢迎来到尔游网。
搜索
您的当前位置:首页【练习】matlab信号产生

【练习】matlab信号产生

来源:尔游网
第二篇 基于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]);

10.80.60.40.20-2-10123456 图一 连续阶跃信号 2. 连续指数信号的产生

产生随时间衰减的指数信号的MATLAB程序如下:

t = 0: 0.001: 5; x = 2*exp(-1*t); plot(t,x);

21.81.61.41.210.80.60.40.2000.511.522.533.544.55 图二 连续指数信号 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);; 图三 连续正弦信号

21.510.50-0.5-1-1.5-200.10.20.30.40.50.60.70.80.91 - 3 - 10.90.80.70.60.50.40.30.20.1 - 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); 图四 连续矩形脉冲信号

0-2-10123456

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)等同于

1.510.5square(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]);

-0.5-1-1.500.511.5202.5

6. 连续抽样信号的产生

可使用函数sinc(x)计算抽样信号, 函数sinc(x)的定义为 。 产生信号的MATLAB程序如下:

t= -10:1/500:10;

10.80.60.40.20-0.2x=sinc(t/pi); -0.4-10-8-6-4-20246810plot(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) 图七 单位脉冲序列

10.90.80.70.60.50.40.30.20.10-505101520

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,x);

10.90.80.70.60.50.40.30.20.10-505101520图八 单位阶跃序列 109876543210-5051015图九 指数序列

0.50.40.30.20.10-0.1-0.2-0.3-0.4-0.5-10-8-6-4-20246810图十一 正弦序列

- 5 - - 10.80.60.40.211.离散周期矩形波序列的产生 产生幅度为1、基频rad、占空比为50%的周期方波的MATLAB程序如下: omega=pi/4; k=-10:10; x = square(omega*k,50); stem(k,x); 图十二 离散周期矩形波序列

0-0.2-0.4-0.6-0.8-1-10-8-6-4-20246810

12. 白噪声序列的产生

10.90.80.70.60.50.40.30.20.1白噪声序列在信号处理中是常用的序列。 函数rand可产生在[0,1]区间均匀分布的白噪声序列, 函数randn可产生均值为0,方差为1的高斯分布白噪声。

N=20; k=0:N-1;

x=rand (1,N) stem(k,x); 图十三 白噪声序列

002468101214161820

(二) 序列的基本运算

表一 序列基本运算表

离散序列:

x[k][1,2,1,1,0,3;k0,1,2,3,4,5]h[k][1,1,1;k0,1,2] (1)计算离散卷积和 : y[k] (2)计算离散自相关函数:

x[k]*h[k]kRxx[k]x[k]x[kn]x=[1,2,1,1,0,-3]; h=[1,-1,1];

y[k]%计算离散卷积和 4 y=conv(x,h); 2 subplot(2,1,1); 0 stem([0:length(y)-1],y); -2 -4title('y[k]');xlabel(' k'); 0 1 2 3 4 5 6 7

kRxx[n]%计算离散自相关函数 20y=xcorr(x,x); 10subplot(2,1,2);

0m=(length(y)-1)/2;

-10stem([-m:m],y); -5-4-3-2-1012345ntitle('Rxx[n]');

xlabel('n');

三、 实验思考题

1. 两个连续信号的卷积定义是什么?两个序列的卷积定义是什么?卷积的作用是什么?conv函数只输出了卷积结果,没有输出对应的时间向量,如何使时间向量和卷积结果对应起来?

2. 两个连续信号的相关定义是什么?两个序列的相关定义是什么?相关的作用是什么? 3. 能够利用MATLAB产生单位冲激信号吗? 4. 产生连续信号时,首先要定义时间向量t = 0:T:Tp。 其中T和Tp是什么意思?

- 7 - -

实验二 时域抽样与频域抽样

一、 实验目的

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(t) t0T2T x[k] k 012 图一 连续信号抽样的离散序列

若x[k]=x(kT)|t=kT,则信号x(t)与x[k]的频谱之间存在: 1jXj(nsam)X(e) Tn其中:x(t)的频谱为X(j

),x[k]的频谱为X(ej

)

可见,信号时域抽样导致信号频谱的周期化。 wsam=2p/T (rad/s)为抽样角

频率,fsam=1/T为抽样频率。 数字角频率W与模拟角频率w的关系为:Ω=ωT

其中:x(t)的频谱为X(jw),x[k]的频谱为X(ejW)

用MATLAB实现对信号 x ( t ) cos( 2 π  20 t ) 的抽样。

t0 = 0:0.001:0.1; 连续信号及其抽样信号1x0 =cos(2*pi*20*t0);

0.8plot(t0,x0,'r')

0.6hold on %

0.4信号最高频率fm为20 0.2Hz, %按100 Hz抽样得到序0列。 -0.2Fs = 100; -0.4t=0:1/Fs:0.1; -0.6-0.8x=cos(2*pi*20*t);

-1stem(t,x); 00.010.020.030.040.050.060.070.080.09hold off

title('连续信号及其抽样信号') 图二 x ( t )  cos( 2 π  20 t ) 的抽样图形

2. 信号的频域抽样

非周期离散序列x[k]的频谱X(ej)是以2为周期的连续函数。频域抽样是将X(ej)离散化以便于数值计算。

频域抽样与时域抽样形成对偶关系。在[0,2]内对X(ej) 进行N点均匀抽样,引起时域序列x[k]以N点为周期进行周期延拓。

 ~x[k]x[knN]

n

频域抽样定理给出了频域抽样过程中时域不发生混叠的约束条件:

若序列x[k]的长度L,则应有NL。

0.1[ k ] , 1, 1; k 2 }已知序列 x { 1 0 , 1 , , 对其频谱X(ej)进行抽样,

分别取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); stem(omegam./pi,abs(Xk),'r','o');hold off

- 9 - -

三、实验思考题:

1. 将语音信号转换为数字信号时,抽样频率一般应是多少? 2. 在时域抽样过程中,会出现哪些误差?如何克服或改善? 3. 在实际应用中,为何一般选取抽样频率fsam (3~5)fm?

4. 简述带通信号抽样和欠抽样的原理? 5. 如何选取被分析的连续信号的长度?

6. 增加抽样序列x[k]的长度,能否改善重建信号的质量? 7. 简述构造内插函数的基本原则和方法?

8. 抽样内插函数、阶梯内插函数、线性内插函数、 升余弦内插函数各有什么

特性?

实验三 连续系统分析

一、 实验目的

1.深刻理解连续时间系统的系统函数在分析连续系统的时域特性、频域特性及稳定性中的重要作用及意义,掌握根据系统函数的零极点设计简单的滤波器的方法。

2.掌握利用MATLAB分析连续系统的时域响应、频响特性和零极点的基本方法。

二、 实验原理

MATLAB提供了许多可用于分析线性时不变连续系统的函数,主要包含有系统函数、系统时域响应、系统频域响应等分析函数。 1. 连续系统的时域响应

连续时间LTI系统可用如下的线性常系数微分方程来描述:

any(n)(t)an1y(n1)(t)a1y (t)a0y(t)bmx(m)(t)bm1x(m1)(t)b1x (t)b0x(t)

已知输入信号x(t)以及系统初始状态y(0),y'(0),,y(n1)(0),就可以求出系统的响应。

MATLAB提供了微分方程的数值计算的函数,可以计算上述n阶微分方程描述的连续系统的响应,包括系统的单位冲激响应、单位阶跃响应、零输入响应、零状态响应和完全响应。

在调用MATLAB函数时,需要利用连续系统对应的系数函数。对微分方程进行Laplace变换即可得系统函数: Y(s)bmsmbm1sm1b1sb0 H(s)nn1X(s)ansan1sa1sa0在MATLAB中可使用向量和向量分别保存分母多项式和分子多项式的系数:

a[an,an1,,a1,a0] b[bm,bm1,,b1,b0]

这些系数均按s的降幂直至s0排列。

● 连续系统的单位冲激响应h(t)的计算 impulse(sys)计算并画出系统的冲激响应。 参数:sys可由函数tf(b,a)获得。其中:

a[an,an1,,a1,a0] b[bm,bm1,,b1,b0]

- 11 - -

h=impulse(sys, t) 计算并画出系统在向量t定义的区间上的冲激响

应, 向量h保存对应区间的系统冲激响应的输出值。

已知描述某连续系统的微分方程:

y\"(t)5y' (t)6y(t)2x' (t)8x(t)h(t)21.8

计算该系统的单位冲激响应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)获得。其中:

1.61.41.210.80.60.40.200204060t80100120a[an,an1,,a1,a0] b[bm,bm1,,b1,b0]

g=step(sys, t)

计算并画出系统在向量t定义的区间上的阶跃响应,向量g保存对应区间的系统阶跃响应的输出值。

● 连续系统的零状态响应y(t)的计算

lsim(sys, x, t) 计算并画出系统的零状态响应。 参数: sys可由函数tf(b,a)获得 x为输入信号

t为定义的时间向量。

已知描述某连续系统的微分方程:y\"(t)5y' (t)6y(t)2x' (t)8x(t) 计算在输入x(t)etu(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)可以表示为部分分式形式:

0.70.60.50.40.30.20.100123456710H(s)(sz1)(sz2)...(szm)N(s) kD(s)(sp1)(sp2)...(spn)设mn,且H(s)的极点pi全部为单极点,则:

nki h(t)kiepitu(t) H(s)i1i1spin系统函数H(s)的极点pi决定了冲激响应h(t)的基本形式,而零点和极点共同

确定了冲激响应h(t)的幅值ki。

MATLAB中提供了roots函数计算系统的零极点,提供了pzmap函数绘制连续系统的零极点分布图。

已知某连续系统的系统函数为:

2s23s1H(s)3 计算其零极

s2s22s1Pole-Zero Map10.80.60.40.2Imag Axis点,画出分布图。

0-0.2-0.4-0.6-0.8b=[2,3,1];a=[1,2,2,1]; z=roots(b) p=roots(a) sys=tf(b,a);

pzmap(sys) 图三 系统函数零极点分布图

-1-1-0.8-0.6-0.4-0.20Real Axis

- 13 - -

3.连续系统的频率响应

若连续因果LTI连续系统的系统函数H(s)的极点全部位于S左半平面,则系统的频率响应可由H(s)求出,即

H(j)H(s)sjH(j)ej()

MATLAB中freqs函数可以分析连续系统的频响,格式如下:

H=freqs(b,a,w):

计算系统在指定频率点向量w上的频响H;w为频率点向量。 [H,w]=freqs(b,a) :自动选取200个频率点计算频率响应。

已知某连续系统的系统函数为: Magnitude response11 H(s)(s1)(s2s1)Amplitude0.90.80.70.6分析系统的幅频率特性。

0.5

0.4b=[1]; a=conv([1,1],[1,1,1]); 0.3[H,w]=freqs(b,a); 0.20.1plot(w,abs(H));

0xlabel('Frequency(rad/s)'); 0123456710Frequency(rad/s)ylabel('Amplitude');

title('Magnitude response'); 图四 系统函数幅频特性

三、实验思考题

1. 系统函数的零极点对系统频率特性有何影响?

2. 对于因果稳定、实系数的低通、高通、带通、带阻滤波器,零极点分布有何特点?

3. 系统函数的零极点对系统冲激响应有何影响?

4. 若某因果系统不稳定,有哪些主要措施可使之稳定? 5. 如果出现零极点抵消的情况,对系统特性有什么影响? 6. 在工程实际中,系统函数的零极点有哪些主要应用?

7. 使用计算机分析连续系统,需要解决连续系统离散化的问题,怎样离散化?

8. 连续系统响应的计算机求解可以分为哪些方法?

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务