MATLAB程序设计实验报告

来源:工作范文网 时间:2020-10-10 09:07:31

MATLAB 程序设计实验报告

一、实验目的

通过实验熟悉MATLAB仿真软件的使用方法;

掌握用MATLAB寸连续信号时域分析、频域分析和s域分析的方法,利用绘图命令绘 制出典型信号的波形,了解这些信号的基本特征;

掌握用MATLAB寸离散信号时域分析、频域分析和z域分析的方法,利用绘图命令绘 制出典型信号的波形,了解这些信号的基本特征;

通过绘制信号运算结果的波形,了解这些信号运算寸信号所起的作用。

二、 实验设备

1. 计算机

2. MATLAB R2007a 仿真软件

三、 实验原理

寸系统的时域分析

信号的时域运算包括信号的相加、相乘, 信号的时域变换包括信号的平移、 反折、 倒相 及信号的尺度变换。

(1 )信号的相加和相乘:已知信号f1 (t)和f2 (t),信号相加和相乘记为

f(t) f1(t) f2(t); f(t) f1(t) f2(t)。

信号的微分和积分: 寸于连续时间信号, 其微分运算是用 diff 函数来完成的, 其

语句格式为: diff(function, 'variable ',n) , 其中 function 表示需要进行求导运算的信

号,或者被赋值的符号表达式; variable 为求导运算的独立变量; n 为求导的阶数, 默认值 为求一阶导数。连续信号的积分运算用 int 函数来完成, 语句格式为: diff(function, ' variable ' ,a,b) , 其中 function 表示需要进行被积信号, 或者被赋值的 符号表达式;variable 为求导运算的独立变量; a,b为积分上、下限,a和b省略时为求不

定积分。

信号的平移、翻转和尺度变换

信号的平移包含信号的左移与右移, 信号的翻转包含信号的倒相与折叠, 平移和翻转信

号不会改变信号 f(t)的面积和能量。信号的尺度变换是对信号 f(t)在时间轴上的变化,可

使信号压缩或扩展。 f(at)将原波形压缩a倍,f(t/a)将原波形扩大a倍。

寸系统频率特性的分析

系统的频率响应

设线性时不变(LTI )系统的冲激响应为 h(t),该系统的输入(激励)信号为 f(t),则

此系统的零状态输出(响应) y(t)为:

y(t) h(t) f(t) ( 3-1)

假设f(t), h(t)及y(t)的傅里叶变换分别为 F(jw), H(jw)及Y(jw),根据时域卷积

定理,与(1-1)式对应的及F(jw), H(jw)及Y(jw)在频域上的关系式为:

Y( jw) H( jw) F( jw) ( 3-2)

一般地,连续系统的频率响应定义为系统的零状态响应 y(t)的傅里叶变换 Y(jw)与输

入信号f (t)的傅里叶变换F( jw)之比,即:

H(jw)Y(jw)F(jw)

H(jw)

Y(jw)

F(jw)

(3-3)

通常,H(jw)可表示成两个有理多项式 B(jw)与A( jw)的商,即:

(3-4)H(jw)匹叫叽叫 b2(jw)mi—bj^m

(3-4)

A( jw) a^jw) a2(jw) am(jw) a.

连续时间信号卷积及MATLA实现

卷积积分:卷积积分在信号与系统分析中具有非常重要的意义,是信号与系统分析 的基本方法之一。有两个与卷积相关的重要结论:

f (t) f(t) (t),即连续信号可分解为一系列幅度由 f(t)决定的冲激信号 (t)及其

平移信号之和; 线性时不变连续系统,设其输入信号为 f(t),单位响应为h(t),其零状

态响应为 y(t),则有:y(t) f (t) h(t)。

MATLAB实现连续时间信号的卷积:将连续信号 f1(t)与f2 (t)以时间间隔 进行取

样,得到离散序列 f1(k )和f2(k );构造与f1(k )和f2(k )相对应的时间向量 k1和k2

(注意,此时时间序号向量 k1和k2的元素不再是整数,而是取样时间间隔 的整数倍的时

间间隔点),最后调用conv()函数可近似的求解连续时间信号的卷积积分。

离散时间信号的卷积

离散时间序列f1 (k)和f2(k)的卷积和定义为:

f(k) fi(k)* f2(k) fi(i) f2(k i)

i

卷积和可调用conv()函数执行。

四、实验内容及步骤

上机实验前,认真阅读实验原理,掌握连续系统频率特性的 MATLAB实现的方法。

利用MATLAB相关命令实现以下实验内容。

(1)利用MATLAB现f(t) e 025t (t)向右移3和向左移3的波形。

解:实现该过程的 MATLAB命令程序如下:

clear;

close all;

t=-5::5;

x=exp*t).*stepfu n( t,0);

x1= exp*(t+3)).*stepfu n( t,3);

x2=exp*(t-3)).*stepfu n( t,-3);

subplot(331);

plot(t,x);

grid on;

title('原信号 x(t)');

subplot(312);

plot(t,x1);

grid on;

title('左移信号 x(t)');

subplot(313);

plot(t,x2);

grid on;

title('右移信号 x(t)');

xlabel('时间 t');

程序运行结果如图所示:

原信号 x(t)

时间t

(2)

(2)设信号 f(t) (1 *) [ (t 2) (t 2)],用 MATLAB求 f (t 2),f(t 2),f( t),

f(2t) , f (t),并绘出其时域波形。

解:实现该过程的 MATLAB命令程序如下:

t=-6::6;

f=(1+1/2*t).*[stepfu n( t,-2)-stepfu n( t,2)]; f1=(1+1/2*(t+2)).*[(t+2>-2)-(t+2>2)];

f2=(1+1/2*(t-2)).*[(t-2>-2)-(t-2>2)];

f3=(1+1/2*(-t)).*[(-t>-2)-(-t>2)];

f4=(1+t).*[(2*t>-2)-(2*t>2)];

f5=-(1+1/2*t).*[(t>-2)-(t>2)];

subplot(611)

plot(t,f);

grid on;

title(' 时域波形');

subplot(612)

plot(t,f1);

grid on;

title('左移信号 f(t+2)');

subplot(613)

plot(t,f2);

grid on;

title('右移信号 f(t-2)');

subplot(614)

plot(t,f3);

grid on;

title('翻转信号 f(-t)');

subplot(615)

plot(t,f4);

grid on;

title('压缩信号 f(2t)');

subplot(616)

plot(t,f5);

grid on;

title('反向信号-f(t)');

xlabel('时间 t');

程序运行结果如图所示:

时域波形

(3)已知 f,t) -2t-1 , f2(t) 9t,利用 MATLAB十算卷积 f“(t) f2(t)的波形。

解:实现该过程的 MATLAB命令程序如下:

s=;

k1=0:s:2;

k2=k1;

f1=-2*k1-1;

f2=9*k2;

f=con v(f1,f2);

f=f*s;

k0=k1(1)+k2(1);

k3=le ngth(f1)+le ngth(f2)-2;

k=k0:s:k3*s;

subplot(3,1,1);

plot(k1,f1);

title('f1(t)');

subplot(3,1,2);

plot(k2,f2);

title('f2(t)');

subplot(3,1,3);

plot(k,f);

title('f(t)');

程序运行结果如图所示:

-s ,试编写程序8(4)设连续时间信号为一个正弦信号 x(t) cosO.25 t ,采样周期Ts

-s ,试编写程序

8

绘制信号x(t)和已采样信号x(k)的波形图。

解:实现该过程的 MATLAB命令程序如下:

clear;

close all;

dt=;

t=O:dt:1O;

Ts=1/8;

n=0:Ts:10;

x=cos*pi*t);

xn=cos*pi* n);

subplot(211);

plot(t,x);

title('A continuous-time signal x(t)'),xlabel('Time t'); subplot(212);

stem( n,xn,'.');

title('The sampled version x[ n] of x(t)'),xlabel('Time in dex n');

程序运行结果如图所示:

10.50-0.5-1A con ti nu ous-time sig nal x(t)0 2

1

0.5

0

-0.5

-1

A con ti nu ous-time sig nal x(t)

0 2

4 6 8

10

Time t

:一斤 FT" T

1 Illrt

■ h T""

.Tlllll 1

lb;

1 r * 11| i,

**

,,1 1 t 1,

1

The sampled vers ion x[ n] of x(t)

1

0.5

0

-0.5

-1

0 2 4 6 8 10

Time in dex n

(5)已知信号f (t) G4(t),利用MATLAB^现其傅里叶变换。

解:实现该过程的 MATLAB^令程序如下:

clear all;

R=;t=-3:R:3;

f=stepfu n(t,-1)-stepfu n(t,1);

w1=2*pi*5;

N=500;k=0:N;w=k*w1/N;

F=f*exp(-j*t'*w)*R;

F=real(F);

w=[-fliplr(w),w(2:501)];

F=[fliplr(F),F(2:501)]; subplot(2,1,1);plot(t,f);

xlabel('t');ylabel('f(t)'); title('门函数'); subplot(2,1,2);plot(w,F); xlabel('w');ylabel('F(w)'); title('f(t) 的傅里叶变换F(w)');

程序运行结果如图所示:

门函数0w11

门函数

0

w

1

1

0.8

-

-

) 0.6

-

-

0.4

-

-

0.2

-■

L

0

ir

i

i

-3

-2

-1 0

1

2

3

t

2

f(t)的傅里叶变换

F(w)

? L ■

i ■

i

1.5

-

w 1

-

-

F 0.5

-

-

0

-

1 \

-

-0.5

r r i

a

i

-40

2t

(6)利用MATLAB实现信号f(t) e (t)及其f(t 1)的频谱图。

9

解:实现该过程的 MATLAB命令程序如下:

clear all;

R=;

t=-5:R:5;

N=200;

w=2*pi;

k=-N:N;

w=k*w/N;

f1=8/9*exp(-2*t).*stepfu n( t,0);

F=R*f1*exp(-j*t'*w);

F1=abs(F);

P1=a ngle(F);

subplot(3,1,1);plot(t,f1);

xlabel('t');ylabel('f(t)');title('f(t)');

subplot(3,1,2);plot(w,F1);

xlabel('w');ylabel('F(jw)');

subplot(3,1,3);plot(w,P1);

xlabel('w');ylabel(' 相位');

程序运行结果如图所示:

1

f(t)

0.5

k jk

(7)已知负指数序列 f(k) 4e 40 20 ,利用MATLAB^出其实部和虚部波形。

解:实现该过程的 MATLAB命令程序如下:

clear all;

a=-(1/40)+(pi/20)*i;

k=4;

n=0:60;

x=k*exp(a* n);

subplot(2,1,1);

stem( n,real(x));

ylabel('幅值 f(k)');

title('实部'); subplot(2,1,2); stem( n,i mag(x)); xlabel('时间(k)'); ylabel('幅值 f(k)');

title('虚部');

程序运行结果如图所示:

实部

时间(k)

(8)已知两个离散序列 fjk) {8,1,2,35,7} , f2(k) {1,5,621},利用MATLAB会出原信

号及其卷积f(k) fi(k) f2(k)。

解:实现该过程的 MATLAB^令程序如下:

f仁[8,1,2,3,5,7];

k仁 0:5;

f2=[1,5,6,2,1];

k2=0:4;

f=con v(f1,f2); subplot(3,1,1);

stem(k1,f1);

ylabel('f1(k)'); subplot(3,1,2);

stem(k2,f2);

ylabel('f2(k)');

subplot(3,1,3);

stem(0:le ngth(f)-1,f);

xlabel('k');

ylabel('f(k)');

程序运行结果如图所示:

2 jw jw

(9)某离散信号系统的频域响应为:jw e 2e 1

(9)某离散信号系统的频域响应为:

H (ej ) 〒 jw ,利用 MATLAB绘出该

e2jw 3.2ejw 0.6

系统的幅值谱H (ejw)和相位谱H (ejw)。

解:实现该过程的 MATLAB命令程序如下:

w=-4*pi:8*pi/511:4*pi;

b=[1 2 1];a=[1 ];

h=freqz(b,a,w);

subplot(2,1,1);plot(w/pi,abs(h));grid title('fuzhipu|H(ey\omega})|'); xlabel('\omega/\pi');ylabel('fuzhi'); subplot(2,1,2);plot(w/pi,angle(h));grid title('xiangweipu[H(eA{j\omega})]'); xlabel('\omega/\pi');ylabel('xiangwei');

程序运行结杲如图所示:

1.5fuzhipu|H(e j )|10.50-3-2-1 0 1

1.5

fuzhipu|H(e j )|

1

0.5

0

-3

-2

-1 0 1

/

xiangw eipu[H(e j )]

2 3 4

-4

0.5

-0.5-4-3 -2

-0.5

-4

-3 -2

-1 0

/

(10)已知离散信号系统的状态方程为:

X1(k

1)

0.5

0 .5

x1 (k )

X2(k

1)

0.3

0 .6

X2( k )

励为f (k)

0.5

(k),

确定该状态方程x

(k)前10步的解,

1

f (k)

0

,初始条件为x(0)

并画出图形。

1

0.5,激

解:实现该过程的 MATLAB命令程序如下:

clear all

A=[;];

B=[1;0];

x0=[-1;];

n=[10];

f=[0 *on es(1, n-1)]; x(:,1)=x0;

for i=1: n

x(:,i+1)=A*x(:,i)+B*f(i);

end

subplot(2,1,1); stem([O: n],x(1,:));

subplot(2,1,2);

stem([0: n],x(2,:));

程序运行结果如图所示:

五、实验心得

利用MATLAB言号处理工具箱提供的 freqs函数可直接计算系统的频率响应的数值解。

只要选择合理的间隔就能得到合适的频率响应图。通过这个实验,我学会用 MATLAB现连

续时间信号傅里叶变换,用 MATLA盼析LTI系统的频率特性,学会了用 MATLA盼析LTI

系统的输出响应。我已经可以用 MATLAB寸连续信号时域分析、频域分析和 s域分析;对离

散信号时域分析、频域分析和 z域分析能绘制出典型信号的波形。 MATLAB寸我们学习信号

与系统很有用,有助于我们更好的掌握这一学科。

理论源于实践,任何新的理论的发现都是以实践为基础的。 我们应该重视实验,重视理论与

实验的结合,培养我们的创新精神。同时,培养严谨的实验作风和态度。