• 个人简历下载
  • 职场资讯
  • 求职攻略
  • 求职面试技巧
  • 面试题
  • 笔试题
  • 职业规划
  • 职场法则
  • 职场培训
  • 升迁之路
  • 劳动法规
  • 跳槽注意事项
  • 当前位置: 工作范文网 > 职场 > 职业规划 > 正文

    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寸我们学习信号

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

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

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

    有关的专题