matlab任务书 下载本文

MATLAB课程设计任务书(-)

一、名称: MATLAB编程简介 二、目的

熟悉MATLAB编程环境,掌握Help 命令、基本的变量类型、矩阵的基本运算、基本的绘图函数和M-file的建立。 三、内容 (一) 例 题

例1、 Help 命令 help cos help plot help abs help exp help +

例2、 变量和矩阵运算

(1) Matrix——The basic variable type

M=3

M=[1 2 6]

M=[1 2 6; 4 6 7] M13=M(1,3) size(M)

(2) The Colon Operator ( : )

%Creating Array and Vector % v = start: skip: end x1=0:2:10

x2=0:1:10 (or x=0:10) t=-1:0.2:1

?cessing Matrix

A=[1 2 3;4 5 6;7 8 9] A(2:3,1:2) x2(4:8)

(3) Matrix Operations (A±B)

A=[2 3 4; 6 9 8] B=[1 2 3; 5 8 7] C1=A+B C2=A-B C3=A-4

(4) Matrix Operations (A*B A.*B)

% A*B A=[2 3 4; 6 9 8]

1

B=[1 2; 3 5; 8 7] A*B

% A.*B

A=[2 3 4; 6 9 8] B=[1 2 3 ;5 8 7] A.*B

(5) Matrix Operations (B/A ,A\\C, B./A ,A.\\C)

% B/A —— B*inv(A) % A\\C —— inv(A)*C %B./A —— B(i,j)/A(i,j) %A.\\B —— A(i,j)\\B(i,j)

(6) Matrix Operations ( ^ and .^) % ^ Operation

A=[1 2 3; 4 5 6; 7 8 9] b=A^2 % .^ Operation

A=[1 2 3; 4 5 6; 7 8 9] b=A.^2

(7) Matrix Operations ( A′and A. ′)

% A′共轭转置

a=[1+2i 3+4i; 3+2i 5+5i] a′

% A.′非共轭转置 a.′

例3 、 绘图函数plot(x,y) ,stem(k,y) % plot(x,y) x=0:0.01:2; y=sin(2*pi*x); plot(x,y) % stem(k,y) k=0:50;

y=exp(-0.1*k); stem(k,y)

例4、 M file

% y(t)=sin(2t) + sin(5t) -2pi ≤ t ≤ 2pi t =-2*pi:0.02:2*pi; y=sin(2*t) + sin(5*t); plot(t,y)

(二) 练 习 题

1、 基本命令 help plot

help colon help ops

2

help zeros help ones pi*pi-10

sin(pi/4) ans^2 zz=3+4i; conj(zz)

abs(zz) angle(zz) real(zz) imag(zz)

2、Array Indexing

xx=[ones(1,4),[2:2:11],zeros(1,3)] xx(3:7) length(xx)

xx(2:2:length(xx))

xx(3:7)=pi*(1:5)

3、 用以下语句建立M-file

t=-2:0.05:3;

y=sin(2*pi*0.789*t); plot(t,y), grid on

title('TEST PLOT of SINUSOID') xlabel('TIME(sec)')

(-1?t?2)(用M-file实现) 4、 画出以下信号的波形

x1(t)?2cos(2?t?30?) x2(t)?4cos(2?t?60?)

四、要求

学生对实验练习题编写MATLAB程序并运行,在计算机上输出仿真结果。

3

MATLAB课程设计任务书(二)

一、名称:常见信号的MATLAB表示 二、目的

掌握用MATLAB表示信号与系统中的常见信号, 熟悉MATLAB中一些常用的信号生成函数。 三、内容 (一) 例 题

例1 、 画图表示指数信号y?Aeat, A?1,a??0.4 [MATLAB程序]:

% decaying exponential signal

A=1;a=-0.4; t=0:0.01:10;

ft=A*exp(a*t);

plot(t,ft);grid on;

[运行结果]:

10.90.80.70.60.50.40.30.20.10012345678910例2 、 画图表示正弦信号

y?Asin(?0t??), A?1,?0?2?,???/6

[MATLAB程序]: % sinusoidal signal

A=1;w0=2*pi;phi=pi/6; t=0:0.001:8;

ft=A*sin(w0*t+phi); plot(t,ft);grid on;

[运行结果]:

4

10.80.60.40.20-0.2-0.4-0.6-0.8-1012345678

例3 、 画图表示抽样函数y?sin(?t)/(?t)。(利用函数sinc(t)) [MATLAB程序]: % sample function

t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft);grid on;

[运行结果]:

例4、 画图表示矩形信号,设幅度A=1,宽度为W=2。 [MATLAB程序]:

% 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]);

[运行结果]:

10.80.60.40.20-0.2-0.4-10-8-6-4-202468101.510.50

例5、 画图表示周期形三角波信号,设幅度A=1,宽度为W=4,斜度k=0.5。 [MATLAB程序]:

% 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;

[运行结果]:

-0.500.511.522.533.54 5

1.510.50-0.5-1-1.5 例6 、画图表示指数序列y?[MATLAB程序]: % exponential sequence

k=0:10;A=1;a=-0.6; fk=A*a.^k;

stem(k,fk);grid on;

[运行结果]:

10.80.60.40.20-0.2-0.4-0.6-15-10-5051015Aeak, A?1,a??0.6

012345678910例7、 画图表示单位样值序列。 [MATLAB程序]: % unit impulse sequence k=-25:25;

delta=[zeros(1,25),1,zeros(1,25)]; stem(k,delta);

[运行结果]:

10.90.80.70.60.50.40.30.20.10-25-20-15-10-5

0510152025

例8 、利用MATLAB画出f(2t)和

[MATLAB程序]:

%changed triangular pulse signal t=-3:0.001:3;

f(2?2t)的波形。

6

ft1=tripuls(2*t,4,0.5);

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;

[运行结果]:

f(2t)10.80.60.40.20-310.80.60.40.20-3-2-10123-2-10f(2-2t)123

例9 、利用MATLAB计算三角波信号的微分和积分。设三角波信号幅度A=1,宽度为W=4,斜度k=0.5。 [MATLAB程序]: % functri(t) function function yt=functri(t)

yt=tripuls(t,4,0.5);

%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;

%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;

[运行结果]:

df(t)/dt0.40.20Integral of f(t)2.521.5-0.2-0.4-0.610.5-0.80-1-1.2-3-2-10123 (二) 练 习 题

1. 利用MATLAB实现下列连续时间信号 (1)f?t??t??t?,取t=0~10;

7

-0.5-3-2-10123

(2)f?t??10sin(100?t), 取t=0~0.2 (3)f?t??Sa??t?cos?20t?,取t=0~5 (4)f?t??4e?0.5tcos?t,取t=0~10

2.用tripuls函数画出信号f(t)??1?t?????t?1????t?1?????3?t?????t?2????t?3???的波形。

3.(1)编写表示信号f(t)?g1?t?0.5???1?t?????t????t?1????g1?t?1.5?的函数;

(2)画出f(t)、f(0.5t)、f(2?0.5t)的波形。 4.利用MATLAB实现下列离散序列 (1)f(k)???k?1? (2)f(k)???k?

(3)f(k)???k?2????k?5? (4)f(k)?k??k?

(5)f(k)?5(0.8)kcos?0.9?k?

5.利用square函数画出下式所示的离散周期方波序列的波形。

n?1 f(k)??n??1f0?k?,其中f0(k)???k??2??k?4????k?10?

6.已知序列f(k)??2?(k?2)???k?1??3??k????k?1????k?2????k?3??2??k?4? (1)用stem函数,画出序列f(k)的波形; (2)画出序列f(k?2)、序列f(k?4)的波形; (3)画出序列f(k)、f(3k)的波形;

3(4)利用fliplr函数实现序列f(?k),并画出波形。

四、要求

学生对实验练习题编写MATLAB程序并运行,在计算机上输出仿真结果。

8

MATLAB课程设计任务书(三)

一、名称:连续时间系统时域分析的MATLAB实现 二、目的

掌握应用MATLAB实现对线性时不变连续时间系统的时域分析,即熟悉应用MATLAB 实现微分方程的求解、连续时间信号卷积计算等。 三、内容 (一) 例 题

例1 、已知系统的输入信号为

dy(t)dt22f(t)?10sin2?t,系统的初始状态为零,系统的微分方程为

?2dy(t)dt?100y(t)?f(t),求y(t)。

[MATLAB程序]:

%solution of differential equation

ts=0; te=5; dt=0.01;

sys=tf([1],[1 2 100]); t=ts:dt:te;

f=10*sin(2*pi*t); 0.2y=lsim(sys,f,t); 0.15plot(t,y); 0.1xlabel('t(sec)'); 0.05ylabel('y(t)'); 0grid on; -0.05 -0.1[运行结果]: -0.15 -0.2 -0.2500.511.522.533.544.5t(sec)

例2 、在上题中,若输入信号为强度为10的冲激信号,求y(t)。 [MATLAB程序]:

%impulse response of LTI system ts=0; te=5;

y(t)5 9

dt=0.01;

sys=tf([10],[1 2 100]); t=ts:dt:te;

y=impulse(sys,t); plot(t,y);

xlabel('t(sec)'); ylabel('y(t)'); grid on;

[运行结果]:

例3、 在上题中,若输入幅度为10的阶跃信号,求y(t)。 [MATLAB程序]:

%step response of LTI system ts=0; te=5; 0.18dt=0.01;

0.16sys=tf([10],[1 2 100]);

0.14t=ts:dt:te;

0.12y=step(sys,t);

0.1plot(t,y);

0.08xlabel('t(sec)');

0.06ylabel('y(t)');

grid on; 0.04 0.02 [运行结果]: 000.511.522.533.544.55 t(sec) 例4 、 已知信号x(t)??(t)??(t?2),y(t)??(t?3)??(t?5),利用MATLAB计算x(t)?y(t),

并画出卷积结果。 [MATLAB程序]:

%convolution of two signal

t=-1:0.01:6; T=1;

ft1=rectpuls(t-1,2*T);

subplot(3,1,1); plot(t,ft1);grid on;axis([-1 6 -0.5 1.5]);ylabel('x(t)'); ft2=rectpuls(t-4,2*T);

subplot(3,1,2); plot(t,ft2);grid on;axis([-1 6 -0.5 1.5]);ylabel('y(t)') z=conv(0.01*ft1,ft2);

t2=(0:length(z)-1)*0.01-2;

subplot(3,1,3); plot(t2,z);grid on;axis([0 10 -0.5 3]);ylabel('x(t)*y(t)')

[运行结果]:

10.80.60.40.2y(t)0-0.2-0.4-0.6-0.800.511.522.5t(sec)33.544.55

y(t)10

1.51x(t)0.50-0.5-11.510123456y(t)0.50-0.5-130123456x(t)*y(t)210012345678910(二) 练 习 题

1. 已知一线性系统的微分方程为 y??(t)?5?y(t?)6y?(t?)?t?()?t ((1) 试求该系统的零状态响应y(t);

(2) 用lsim求出该系统的零状态响应的数值解,并比较不同的抽样间隔对数值解

的影响。

2.已知一线性系统的微分方程为

dy(t)dt22?4dy(t)dt?25y(t)?e(t)

试求:(1)用impulse函数求该系统的单位冲激响应; (2)用step函数求该系统的单位阶跃响应。

3.下列系统分别为一阶、二阶、三阶BW模拟低通滤波器,用impulse函数分别求出各系统的单位冲激响应,并比较它们的特征。 (1)y?(t)?y(t)?e(t)

(2)y??(t)?2y?(t)?y?t??e(t) (3)y????t??2y??(t)?2y?(t)?y?t??e(t)

4.下列系统分别为BW模拟低通、高通、带通、带阻滤波器,用impulse函数分别求出各系统的单位冲激响应,并比较它们的特征。 (1)y??(t)?2y?(t)?y?t??e(t)

(2)y??(t)?2y?(t)?y?t??e??(t) (3)y??(t)?y?(t)?y?t??e?(t) (4)y??(t)?y?(t)?y?t??e??(t)?e(t)

5.已知某LTI连续系统的单位冲激响应h(t)和各激励信号e(t)的波形如下图所示,试求该系统对各激励信号的零状态响应。

11

h(t) 1 0 2 t 1 e1(t) 1 2 t e2(t) 1 1 2 t e3(t) 0 0 0 2 t

四、要求

学生对实验练习题编写MATLAB程序并运行,在计算机上输出仿真结果。

MATLAB课程设计任务书(四)

一、名称:连续时间系统频域分析的MATLAB实现 二、目的

掌握应用MATLAB实现对线性时不变连续时间系统的频域分析,掌握应用MATLAB近似计算和绘制信号的频谱、连续时间系统的频率响应(幅频响应和相频响应)。 三、内容

(一) 例 题

例1 、利用MATLAB画出下图所示的周期三角波信号的频谱。

f (t) 1 -0.5 -3 -2 -1 0 0.5 -1 1 2 t

n???4j?sin() n?0经计算,该周期三角波信号的傅立叶级数系数为c(n)??n2?2 2?? 0 n?0

[MATLAB程序]:

%frequency spectrum of periodic triangular signal N=10; n1=-N:-1;

c1=-4*j*sin(n1*pi/2)/pi^2./n1.^2; %计算n=-N到-1时的傅立叶级数系数 c0=0; % 计算n=0时的傅立叶级数系数 n2=1:N;

12

c2=-4*j*sin(n2*pi/2)/pi^2./n2.^2; %计算n=1到N时的傅立叶级数系数 cn=[c1 c0 c2]; n=-N:N;

subplot(2,1,1);stem(n,abs(cn));ylabel('Cn的幅度'); subplot(2,1,2);stem(n,angle(cn));ylabel('Cn的相位'); xlabel('\\omega/\\omega_0');

[运行结果]:

0.50.4Cn的幅度0.30.20.10-1021-8-6-4-20246810Cn的相位0-1-2-10-8-6-4-20246810

?/?0

?1-|t| |t|?1? 0 |t|?1例2 、利用MATLAB采用数值方法近似计算三角波信号f(t)??的频谱。

[MATLAB程序]: %example2 的函数 function y=sf1(t,w)

y=(abs(t)<=1).*(1-abs(t)).*exp(-j*w*t);

% Frequency spectrum of triangular signal using quad8 function

w=linspace(-6*pi,6*pi,512); N=length(w); F=zeros(1,N); for k=1:N

F(k)=quadl(@sf1,-1,1,[],[],w(k)); end

figure(1);

plot(w,real(F));

xlabel('\\omega');ylabel('F(j\\omega)');title('三角波信号近似频谱'); figure(2);

plot(w,real(F)-sinc(w/2/pi).^2); %这里的sinc函数值即为理论计算结果 xlabel('\\omega');ylabel('error');title('计算误差');

[运行结果]:

13

三角波信号近似频谱10.5x 10-9计算误差0.80-0.5-10.6F(j?)error0.4-1.5-2-2.50.20-3-0.2-20-15-10-505101520-3.5-20-15-10-505101520??

例3 、利用MATLAB画出???0.9时F(ej?)?11??e?j?的幅度频谱。

[MATLAB程序]:

% amplitude frequency spectrum of a sequence

b=[1];a1=[1 -0.9];a2=[1 0.9];

w=linspace(0,2*pi,512); %线性均分0到2pi的间隔,共512个点 h1=freqz(b,a1,w); h2=freqz(b,a2,w);

plot(w/pi,abs(h1),w/pi,abs(h2),'k:'); xlabel('\\Omega/\\pi');

legend('\\alpha=0.9','\\alpha=-0.9');

12[运行结果]: ?=0.9?=-0.9 10

8 6

4 2

0 00.20.40.60.811.21.41.61.82?/?

例4 、某连续线性系统的频率响应为:H(j?)?1(j?)?2(j?)?2(j?)?132

利用MATLAB画出该系统的幅频响应|H(j?)|和相频响应?(?)。 [MATLAB程序]:

% frequency response of a system b=[1];a=[1,2,2,1];

w=linspace(0,5,200); H=freqs(b,a,w); subplot(2,1,1); plot(w,abs(H));

set(gca,'xtick',[0 1 2 3 4 5]); set(gca,'ytick',[0 0.4 0.707 1]); xlabel('\\omega(rad/s)'); ylabel('|H(j\\omega)|'); grid on;

subplot(2,1,2); plot(w,angle(H));

set(gca,'xtick',[0 1 2 3 4 5]);

14

xlabel('\\omega(rad/s)'); ylabel('\\phi(rad)'); grid on;

1

0.707[运行结果]:

0.4

(二)练 习 题

|H(j?)|0012345?(rad/s)42?(rad)0-2-4012345

1. 求下图所示周期矩形脉冲信号的傅立叶级数表示式。并用MATLAB求出由前N次谐波合成的信号近似波形。

f(t) …… -2

??(rad/s)1 …… 2

t

2.求方波信号f(t)??n???g??t?nT0?的幅度谱,并画出幅度谱

-0.5 0 0.5

周期矩形脉冲信号

。分别取T0?2?,4?,8?,

讨论周期T0与频谱的关系。

3.利用MATLAB采用数值方法近似计算矩形脉冲信号f(t)??(t?1)??(t?1)的频谱,画出幅度谱。

4.信号f1(t) 和f2(t)如下图所示。

(1) 取t=0:0.05:2.5,画出f(t)?f1(t)?f2(t)cos(50t)的波形。

f1(t) 1 0 1 t 1 0 1 2 t f2(t) (2) 一系统的H(j?)为:

H(j?)?1043422

(j?)?26.131(j?)?3.4142?10(j?)?2.6131?10?j???1034 用freqs画出H(j?)幅频响应和相频响应曲线。

(3)用lsim函数求出信号f(t)和f(t)cos(50t)通过上述系统的响应y1(t)和y2(t),并根据理论知识解释所得的结果。

四、要求

15

学生对实验练习题编写MATLAB程序并运行,在计算机上输出仿真结果。

MATLAB课程设计任务书(五)

一、名称:连续时间系统复频域分析的MATLAB实现 二、目的

掌握用MATLAB实现连续时间系统S域分析中的零极点求解、拉氏变换及反拉氏变换、由系统函数求冲激响应、频率响应等。 三、内容 (一) 例 题

例1、 用部分分式展开法求F(s)的Laplace反变换:F(s)?s?2s?4s?3s32

[MATLAB程序]:% inverse Laplace transform by partial-fraction expansion

format rat; % 将分数以近似的小整数之比的形式显示,输出格式 num=[1 2]; den=[1 4 3 0];

[r,p]=residue(num,den) % r,p均为列向量

[运行结果]:

r =

-1/6 -1/2 2/3

p =

-3 -1 0

即,由程序已算出

r??[?16,?12,], p??[?3,?1,0], 23??1/2s?1??1/6s?3则

F(s)?2/3s,

16

反变换为

f(t)?23u(t)?12e?tu(t)?16e?3tu(t)

例2 、 用部分分式展开法求F(s)的Laplace反变换:F(s)?s?2s(s?1)3

[MATLAB程序]:% inverse Laplace transform using conv function and partial-fraction expansion

num=[1 -2];

a=conv([1 0],[1 1]); b=conv([1 1],[1 1]); den=conv(a,b);

[r,p]=residue(num,den) % r,p均为列向量

%第二种解法

% inverse Laplace transform using poly function and partial-fraction expansion num=[1 -2];

den=poly([0,-1,-1,-1]);

[r,p]=residue(num,den) % r,p均为列向量

[运行结果]:

r =

2 2 3 -2

p =

-1 -1 -1 0

即,用程序可算出

r??[2,2,3,?2], p??[?1,?1,?1,0],

F(s)?2s?1?2(s?1)?t2?3(s?1)?t3?2?2s?t,

?2)u(t)

2s3反变换为

f(t)?(2e?2te?1.5te例3、 用部分分式展开法求F(s)的Laplace反变换:F(s)??3s22?5(s?1)(s?s?2)

[MATLAB程序]:% inverse Laplace transform by partial-fraction expansion

num=[2 3 0 5];

den=conv([1 1],[1 1 2]);

[r,p,k]=residue(num,den) % r,p均为列向量 [angle,mag]=cart2pol(real(r),imag(r))

[运行结果]:

r =

-2 + 2024/1785i -2 - 2024/1785i 3

p =

17

-1/2 + 1012/765i -1/2 - 1012/765i -1

k =

2

angle =

1972/751

-1972/751

0

mag =

7895/3434 7895/3434 3

即,用程序可算出

r??[-2.0000 + 1.1339i, -2.0000 - 1.1339i, 3.0000], p??[-0.5000 + 1.3229i, -0.5000 - 1.3229i, -1.0000] , k?2 angle??[2.6258, -2.6258, 0], mag??[2.2991, 2.2991, 3.0000]

?2.2991e?2.6258i所以

F(s)?2?3s?1??t?2?1.1339is?0.5?1.3229i??2?1.1339is?0.5?1.3229i?2?3s?1s?0.5?1.3229i?2.2991e2.6258is?0.5?1.3229i

f(t)?2?(t)?3eu(t)?4.5982e?0.5tcos(1.3229t?2.6258)u(t)

f(t)?e?t例4、 分别利用MATLAB中的laplace和ilaplace函数求:(1)Laplace变换;(2)F(s)?ss22sin(at)u(t)的

?1的Laplace反变换。

[MATLAB程序]:%(1) Laplace transform using laplace function

f=sym('exp(-t)*sin(a*t)'); F=laplace(f)

%(2) Inverse Laplace transform using ilaplace function F=sym('s^2/(s^2+1)'); ft=ilaplace(F)

[运行结果]:

F =

a/((s+1)^2+a^2) ft =

Dirac(t)-sin(t)

即,结果为

例5、 已知系统函数为H(s)?s?1s?2s?22F?a/((s+1)^2+a^2),

ft?Dirac(t)?sin(t), 即 f(t)??(t)?sin(t)u(t)

,利用MATLAB求出该系统的零极点,并画

出零极点分布图。

[MATLAB程序]:% pole-zero map of H(s) using plot function

b=[1 -1]; a=[1 2 2]; zs=roots(b); ps=roots(a);

plot(real(zs),imag(zs),'o',real(ps),imag(ps),'kx','markersize',12);

18

axis([-2 2 -2 2]); grid on;

legend('零点','极点');

[运行结果]:

21.510.50-0.5-1-1.5-2-2

零点极点-1.5-1-0.500.511.52

例6、 已知系统函数为H(s)?1s?2s?2s?132

,利用MATLAB画出该系统的零极点分

布图;求出该系统的单位冲激响应h(t)的幅频响应,并判断系统是否稳定。

[MATLAB程序]:% impulse response, amplitude frequency response and stability analysis % of LTI H(s)

num=[1]; den=[1 2 2 1]; sys=tf(num,den); poles=roots(den); figure(1); pzmap(sys); t=0:0.02:10;

h=impulse(num,den,t); figure(2); plot(t,h);

xlabel('t(s)');ylabel('h(t)');title('Impulse Response'); [H,w]=freqs(num,den); figure(3);

plot(w,abs(H));

xlabel('ang.freq.\\omega(rad/s)'); ylabel('|H(j\\omega)|');

title('Magnitude Response');

[运行结果]:

19

Impulse ResponsePole-Zero Map10.80.60.40.45零点极点0.40.350.30.25Imaginary Axis0.2h(t)-1.2-1-0.8-0.6-0.4-0.200-0.2-0.4-0.6-0.8-1-1.40.20.150.10.050-0.05012345t(s)678910

10.90.80.70.6|H(j?)|Real Axis

Magnitude Response0.50.40.30.20.100123456ang.freq.?(rad/s)78910(二)练 习 题

1、已知连续时间信号的S域表示式,试用residue求出F(s)的部分分式展开式,并写出f(t)的表达式(f(t)要写成实数):

(1) F?s??41.6667s?3.7444s?25.7604s?41.666732

(2) F?s??s3?s?5??s2?5s?25?

2、已知某连续时间系统的微分方程为

y???t??4y??t??3y?t??2f??t??f?t?

f?t????t?,y?0???1,y??0???2,试求系统的零输入响应、零状态响应和全响应,并

画出相应的波形。

3、已知系统函数为H?s??s?2s?2s?2s?1321s?2?s?12,试分别画出??0,1,1,2时系统的零极点图。

4如果系统是稳定的,画出系统的幅度响应曲线。 4、已知F?s??,画出该系统的零极点分布图,求出系统的冲激响应、

阶跃响应和频率响应。

四、要求

学生对实验练习题编写MATLAB程序并运行,在计算机上输出仿真结果。

20

MATLAB课程设计任务书(六)

一、名称:离散时间系统时域分析的MATLAB实现 二、目的

掌握用MATLAB实现离散时间系统的零状态响应、冲激响应、阶跃响应、卷积和的求解等。 三、内容 (一)例 题

例1、 受噪声干扰的信号为

f(k)?s(k)?d(k),其中s(k)?(2k)0.9k是原始信号,d(k)是噪

MATLAB编程

声。已知M点滑动平均系统的输入输出关系为:y(k)?1MM?1?n?0f(k?n)。试用

实现M点滑动平均系统对噪声干扰的信号去噪。

[提示:噪声信号可用MATLAB中的rand函数产生,将其叠加在原始信号上,即得到受噪声干扰的输入信号f(k)]。

[MATLAB程序]:%signal smoothing by moving average filter

R=51; %length of input signal

%generate(-0.5,0.5)uniformly distributed random numbers d=rand(1,R)-0.5; k=0:R-1;

s=2*k.*(0.9.^k); f=s+d; figure(1);

plot(k,d,'r-.',k,s,'b:',k,f,'k-'); xlabel('Time index k'); legend('d[k]','s[k]','f[k]'); M=5;

b=ones(M,1)/M; a=1;

y=filter(b,a,f); figure(2);

plot(k,s,'b:',k,y,'r-'); xlabel('Time index k');

21

legend('s[k]','y[k]');

[运行结果]:

876558d[k]s[k]f[k]76s[k]y[k]4433210-1210051015202530Time index k35404550051015202530Time index k35404550

例2、用impz函数求下列离散时间系统的单位样值响应h(k),并与理论值

kkh(k)??(?1)?2(?2), k?0进行比较。y(k)?3y(k?1)?2y(k?2)?f(k) [MATLAB程序]:%impulse response of discrete system

k=0:10; a=[1,3,2]; b=[1];

h=impz(b,a,k); subplot(2,1,1); stem(k,h);

title('单位样值响应的近似值'); grid on;

hk=-(-1).^k+2*(-2).^k; subplot(2,1,2); stem(k,hk); title('单位样值响应的理论值'); grid on;

[运行结果]:

单位样值响应的近似值3000200010000-1000-2000012345678910单位样值响应的理论值3000200010000-1000-2000012345678910

例3、 已知序列x(k)={1,2,3,4;n=0,1,2,3},y(k)={1,1,1,1,1;n=0,1,2,3,4},利用MATLAB计算x(k)?y(k),并画出卷积结果。

[MATLAB程序]:%convolution of two sequences

22

x=[1,2,3,4]; y=[1,1,1,1,1]; z=conv(x,y);

subplot(3,1,1);stem(0:length(x)-1,x);ylabel('x(k)'); subplot(3,1,2);stem(0:length(y)-1,y);ylabel('y(k)');

subplot(3,1,3);stem(0:length(z)-1,z);ylabel('x(k)*y(k)');xlabel('k');

[运行结果]:

4x(k)20100.511.522.53y(k)0.501000.511.522.533.54x(k)*y(k)500123k4567

(二)练 习 题

1.已知f(k)??f?N?1?k?,h?k???h?N?1?k?,用conv函数计算f(k)?h?k?,并总结f(k)?h?k?的类型。(提示:自己构造满足条件的两个序列) 2.利用impz函数,计算系统

y(k)?0.7y?k?1??0.45y?k?2??0.6y?k?3??0.8f?k??0.44f?k?1??0.36f?k?2??0.02f?k?3?

的单位脉冲响应,并画出前31点的图。 3.利用filter 函数,求出系统y(k)?1.85y?k?1??0.85y?k?2??f?k?的单位脉冲响应,并判断系统是否稳定。

四、要求

学生对实验练习题编写MATLAB程序并运行,在计算机上输出仿真结果。

23

MATLAB课程设计任务书(七)

一、名称:离散时间系统Z域分析的MATLAB实现 二、目的

掌握用MATLAB实现离散时间系统Z域分析中的零极点求解、Z变换及反Z变、由系统函数求冲激响应、频率响应等。 三、实验内容 (一)例 题

例1、 利用MATLAB计算F(z)?1818?3z?1?4z?2?z?3的部分分式展开式。

[MATLAB程序]:% Partial-fraction expansion of F(z)

num=[18];

den=[18 3 -4 -1];

[r,p k]=residuez(num,den)% r,p为列向量

[运行结果]:

r =

0.3600 0.2400 0. 4000

p =

0.5000 -0.3333 -0.3333

k = [ ] 即,由程序已算出

r??[0.3600, 0.2400, 0.4000], p??[0.5000, -0.3333, -0.3333] , k?[]

所以有

F(z)?0.361?0.5z?1?0.241?0.3333z?1?0.4(1?0.3333z?1)2

z1?0.5z?1例2、 已知一离散因果LTI系统的系统函数为:H(z)?该系统的零极点。

说明:先将系统改写为:H(z)?zz32?2z?2?z?2?3?1?0.005z?0.3z?3,求

?2z?12?0.5z?0.005z?0.3,然后用tf2zp函数求系统的零极点。

[MATLAB程序]:% zeros and poles of H(z)

b=[1 2 1];

a=[1 -0.5 -0.005 0.3];

[r,p k]=tf2zp(b,a) % r,p为列向量

24

zplane(b,a);

[运行结果]:

r =

-1 -1

p =

0.5198 + 0.5346i 0.5198 - 0.5346i -0.5396

k =1

求出的零点为:z??1(2阶), z?-0.5396。 z?0;极点为:z?0.5198 ? 0.5346i,零极点图如下:

10.80.60.4Imaginary Part0.20-0.2-0.4-0.6-0.8-1-1-0.50Real Part0.512

zz32例3、 已知一离散因果LTI系统的系统函数为:H(z)??2z?12?0.5z?0.005z?0.3。利用

MATLAB画出该系统的零极点分布图,求系统的单位样值响应和幅频响应,并判断系统的稳定性。

[MATLAB程序]:% Impulse response, amplitude frequency response and stability analysis of %LTI H(z)

b=[0 1 2 1];

a=[1 -0.5 -0.005 0.3]; figure(1); zplane(b,a); num=[0 1 2 1];

den=[1 -0.5 -0.005 0.3]; h=impz(num,den) figure(2); stem(h); xlabel('k'); ylabel('h(k)');

title('Impulse Response'); [H,w]=freqz(num,den); figure(3);

plot(w/pi,abs(H));

xlabel('ang.freq.\\Omega(rad/s)'); ylabel('|H(e^j^\\Omega)|');

25

title('Magnitude Response');

[运行结果]:

Impulse Response2.510.80.60.41.52Imaginary Part0.20-0.2-0.4-0.6-0.8-11h(k)0.50-0.5-0.50Real Part0.51-102

8765|H(ej?)|-151015k20253035

Magnitude Response43210

该系统为非稳定系统,∵ 在右半平面存在极点

例4、 分别利用MATLAB中的ztrans和iztrans函数求:(1)f(k)?cos(ak)u(k)的z变换;

(2)F(z)?1(1?z)200.10.20.30.40.50.6ang.freq.?(rad/s)0.70.80.91的反变换。

[MATLAB程序]:% (1)Z transform using ztrans function

f=sym('cos(a*k)'); F=ztrans(f)

% (2)Inverse Z transform using iztrans function F=sym('1/(1+z)^2'); f=iztrans(F)

[运行结果]:

F =

(z-cos(a))*z/(z^2-2*z*cos(a)+1) f =

charfcn[0](n)-(-1)^n+(-1)^n*n

(二)练 习 题

1、用reiduez函数,求出下列各式的部分分式展开式和f(k)

(1) F?z?? (2) F?z??

2z?16z?44z?56z?323z?3z?15z?18z?12432432432432

4z?8.68z?17.98z?26.74z?8.04z?2z?10z?6z?6526

2、已知离散时间系统的差分方程为

2y(k)?y(k?1)?3y(k?2)?2f(k)?f(k?1)

kf(k)?0.5?(k),y(?1)?1,y(?2)?3,试用filter函数求系统的零输入响应、零状态响

应和完全响应

3、利用filter 函数求出系统H?z??断系统是否稳定。

4、用zplane(num,den)函数,画出H?z??2z?16z?44z?56z?323z?3z?15z?18z?1243243211?1.85z?1?0.85z?2的单位脉冲响应,并由h?k?判

的零极点图,

并判断系统的稳定性。

5、已知离散时间LTI系统的单位脉冲响应h?k??ak????k????k?N???,a?0,求系统函数,画出系统的零极点分布图、幅度响应曲线和相位响应曲线。

四、要求

学生对实验练习题编写MATLAB程序并运行,在计算机上输出仿真结果。

27

选做任务(一)

一、名称:滤波器的设计和应用 二、内容:

设计低通、带通、高通三种巴特沃斯滤波器。观察所设计滤波器的幅频、相频曲线。用

同一段音频信号通过不同的滤波器。画出滤波后相应的频谱图,并重放滤波后的声音信号。试听滤波结果,并分析滤波器的作用。 参考结果如图1-1和1-2所示:

图1-1

28

图1-2

三、相关知识:

滤波器是一个以特定方式设计出来的系统,用来改变输入信号的频谱分布。信号通过滤波器后会造成频率分布的变化。对于音频信号来说,频率分布直接影响信号重放时的音色和听感。通过对同一段音频素材不同滤波结果的考察,可以更加直观的理解滤波器的作用。

可以使用巴特沃斯滤波器来完成上述滤波功能。设计巴特沃斯数字低通滤波器可以使用如下语句:

[b,a]=butter(n,wc);

其中[b,a]是描述低通滤波器系统函数的两个行向量:即b表示系统函数分子多项式的系数,a表示分母多项式的系数;n为巴特沃斯滤波器的阶数,滤波器的阶数越大,过渡带越窄;wc为数字滤波器的归一化3dB截止频率(即信号幅度下降至1/2处的频率),其数值在[0,1]之间,取1对应0.5倍的采样频率。

当wc=[w1,w2]时,是设计2n阶的带通滤波器,3dB通带为w1 < w < w2。

[b,a]=butter(n,wc,’ftype’);

用于设计截止频率为wc的巴特沃斯高通或带阻滤波器。当ftype=high时,为n阶高通滤波器;ftype=stop,wc=[w1,w2]时,为2n阶的带阻滤波器。

如果在这个函数输入变量的最后,加一个变量‘s’,比如:[b,a]=butter(n,wc,’s’)。表示设计的是模拟滤波器,详细的使用方法,可以用help butter阅读。

29

除了巴特沃思滤波器(butter),IIR滤波器还有切比雪夫I(cheby1)、切比雪夫II(cheby2)和椭圆滤波器(ellip),可以使用help学习他们的使用方法。

滤波功能可以使用filter函数实现: c=filter(b,a,y);

其中,[b,a]对应所使用滤波器的系统函数的分子和分母多项式的系数,比如,上面设计巴特沃思滤波器所得到的系数[b,a]。y是需要被滤波的信号。c是滤波后的结果信号。

傅里叶变换可以使用fft函数实现。调用格式是 Y=fft(y,n);

其中,y是需要观测频谱的时域离散信号,n是变换点数,当y的点数小于n时,y后面补n-y个零。Y是变换得到的频谱。离散信号的频谱是周期的,周期为2pi。使用函数fft得到的频谱范围是[0~2pi],当需要观看[-pi ~ pi]的频谱时,可以使用函数fftshift来转换实现。调用方法是:yy=fftshift(Y);

其中,Y是fft得到的[0~2pi]范围的频谱,yy是转换得到的[-pi ~ pi]的频谱。

音频文件的读取可以使用wavread函数实现,其调用方法为: [y,Fs,bits]=wavread('filename');

其中,返回值y是音频数据,Fs为采样音频数据时使用的采样频率,bits为每个采样样本的比特数。

播放音频数据可以使用sound函数,调用方法为:

sound(y,Fs,bits); 注意采样频率Fs要设置正确,否则音乐会变调。 四、相关函数

[b,a]=butter(n,wc); c=filter(b,a,y); [H,w]=freqz(b,a);

Y=fft(y,n);

yy=fftshift(Y);

[y,Fs,bits]=wavread('filename');

30

任务(二)

一、名称:信号的幅度调制 二、内容

1、仿真幅度调制过程:将一采样信号Sa(t-10)对一个复合信号

s=cos(60*pi*t)+cos(40*pi*t)+cos(20*pi*t)进行幅度调制。后用高通、低通、带通三种不同的滤波器进行滤波,并绘出结果图像。

2、对上述方法得到的调制信号进行解调,恢复出原始的采样信号(解调过程就是:将调制信号和载波再次相乘后经过低通滤波的过程)。

任务1的仿真结果如图2-1和2-2所示(载波信号为周期方波):

图2-1

31

图2-2

三、相关知识:

幅度调制是指载波幅度随调制信号变化的过程。本实验利用采样信号(Sa(t))为调制信号,脉冲波(周期方波)信号或正弦信号为载波信号。调制的过程即是两个信号相乘的过程。

脉冲波信号就是周期方波信号,可以使用函数square实现。该函数和正弦、余弦函数很类似。比如:P = square(2*pi*f0*t, duty)

产生基频为f0,即周期为1/f0,占空比为duty的方波信号。

设计巴特沃斯数字滤波器的可以使用函数butter实现;滤波可以使用函数filter实现;

具体使用细节见选做任务(一)。

32