当前位置:首页 >> 信息与通信 >>

matlab实验报告


MATLAB 程序设计语言 实 验 报 告

专业及班级 ___________________ 姓 学 日 名 号 期 ___________________ ___________________ ___________________

实验一 MATLAB 的基本使用

一、

实验目的

r />
1.了解 MATALB 程序设计语言的基本特点,熟悉 MATLAB 软件的运行环境; 2.掌握变量、函数等有关概念,掌握 M 文件的创建、保存、打开的方法,初步具备将 一般数学问题转化为对应计算机模型处理的能力; 3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。

二、
一.

MATLAB 的基础知识

通过本课程的学习,应基本掌握以下的基础知识: MATLAB 简介

二. MATLAB 的启动和退出 三. MATLAB 使用界面简介 四. 帮助信息的获取 五. MATLAB 的数值计算功能

六. 程序流程控制 七. M 文件
八. 函数文件

九. MATLAB 的可视化 三、上机练习
1. 仔细预习第二部分内容,关于 MATLAB 的基础知识。 2. 熟悉 MATLAB 环境,将第二部分所有的例子在计算机上练习一遍

?1 2 3? ?9 8 7 ? ? ? ? ? 3、已知矩阵 A ? 4 5 6 , B ? 6 5 4 。求 A*B,A .* B,比较二者结 ? ? ? ? ?7 8 9 ? ?3 2 1 ? ? ? ? ?
果是否相同。并利用 MATLAB 的内部函数求矩阵 A 的大小、元素和、长度以及最大 值。 解:>> A=[1 2 3;4 5 6;7 8 9]; >> B=[9 8 7;6 5 4;3 2 1]; >> A*B ans = 30 24 18 84 69 54 138 114 90 >> A.*B ans = 9 16 21 24 25 24

21 16 9 >> [m,n]=size(A) m= 3 n= 3 >> b=sum(A) b= 12 15 18 >> a=length(A) a= 3 >>max(A) ans = 7 8 9

两者结果不同

4、Fibonacci 数组的元素满足 Fibonacci 规则: ak ?2 1) 在命令窗口中完成; 2) 利用 M 文件完成;

a1 ? a2 ? 1。现要求该数组中第一个大于 10000 的元素。

? ak ? ak ?1 , (k ? 1,2,?) ;且

3) 自己定义一个函数文件,并在命令窗口中调用该函数完成。


>> a1=1; >> a2=1; >> b=0; >> while b<10000 b=a1+a2; a1=a2; a2=b; end >> b

b=

10946

5.在同一个图形窗口的两个子窗口中分别画出 cos(

?

虚线) cos( x) 和 x)(红色、 4 8

?

(蓝色、星号)的波形。要求有标题,x、y 轴有标注。

解:>> x=-10:0.1:10;
y1=cos((pi/4)*x); subplot(2,2,1),plot(x,y1,'r:') xlabel('x1') ylabel('y1=cos((pi/4)*x)') title('余弦函数') >> x=-10:0.1:10; y2=cos((pi/8)*x); subplot(2,2,2),plot(x,y1,'b-.p') xlabel('x2') ylabel('y2=cos((pi/8)*x)') title('余弦函数') 图





四、 1、 2、 3、

思考题 在语句末加分号“; ”和不加分号有什么区别? M 文件和函数文件有什么异同之处? 矩阵乘(*)和数组乘(.*)有何不同?

五、

简述本次实验的体会和建议。

实验二
一、实验目的

信号的表示及可视化

1. 掌握连续信号的 MATLAB 表示方法(表达式及图形描述) ; 2. 掌握离散序列的 MATLAB 表示方法(表达式及图形描述) ;

二、实验原理
在 MATLAB 中通常用两种方法来表示信号,一种是向量表示信号,另一种则是用符号 运算的方法来表示信号。 用适当的 MATLAB 语句表示出信号后, 我们就可以利用 MATLAB 的绘图命令绘出直观的信号波形。 (一.) 连续时间信号的表示及可视化 1. 向量表示法:对于连续时间信号 f(t),我们可以用两个行向量 f 和 t 来表示,其中 t 向量是形如 t=t1:p:t2 的 MATLAB 命令定义的时间范围向量,t1 为信号起始时间,t2 为终止时 间,p 为时间间隔。向量 f 为连续信号 f(t)在向量 t 所定义的时间点上的样值。 2. 符号运算表示法:如果信号可以用一个符号表达式来表示它,则我们可用 ezplot 命 令绘制出信号的波形。 3.常用连续信号的表示 1)单位阶跃信号 单位阶跃信号的定义为: ? (t ) ? ?

?1 t ? 0 ?0 t ? 0

一种得到单位阶跃信号的方法是在 MATLAB 的 Symbolic Math Toolbox 中调用单位阶跃 函数 Heaviside,这样可方便地表示出单位阶跃信号。但是,在用函数 ezplot 实现其可视化 时,就出现一个问题:函数 ezplot 只能画出既存在于 Symbolic Math 工具箱中,又存在于总 MATLAB 工具箱中的函数,而 Heaviside 函数仅存在 Symbolic Math Toolbox 中,因此,就 需要在自己的工作目录 work 下创建 Heaviside 的 M 文件,该文件如下: function f=Heaviside(t) f=(t>0); %t>0 时 f 为 1,否则为 0

正确定义出该函数并保存运行后,就可调用该函数了。 (二.) 离散时间信号的表示及可视化 1.一般离散信号的表示:一般说来,离散时间信号用 f(k)表示,其中变量 k 为整数, 代表离散的采样时间点。在 MATLAB 中,用一个向量 f 即可表示一个有限长度的序列。但 是,这样的向量并没有包含其对应的时间序号信息。所以,要完整地表示离散信号需要用两 个向量。 2.典型离散序列的表示

1)单位序列δ (k) 单位序列的定义为 ? (k )

?1 k ? 0 ?? ?0 k ? 0

function dwxulie(k1,k2,k0) k=k1:k2; n=length(k) f=zeros(1,n) f(1,-k0-k1+1)=1 stem(k,f,'filled') axis([k1,k2,0,1.5]) title('单位序列δ (k)') 2)单位阶跃序列 单位阶跃序列 ? (k ) ? ? %在 k0 时刻,信号赋值为 1

?1 k ? 0 ?0 k ? 0

与单位序列类似,下面给出绘制单位阶跃序列ε (k+k0)的 MATLAB 子程序: function jyxulie(k1,k2,k0) k=k1:-k0-1; kk=-k0:k2; n=length(k); nn=length(kk); u=zeros(1,n); uu=ones(1,nn); stem(kk,uu,'filled') hold on stem(k,u,'filled') hold off axis([k1,k2,0,1.5]) title('单位阶跃序列') %k0 前信号赋值为零 %k0 后信号赋值为一

三.上机练习
1.认真预习实验原理的内容,将所有例题在计算机上练习一遍。 2. 用 MATLAB 命令绘制单边指数信号 e
-1.5 t

ε (t)在时间 0<t<3 区间的波形。要求有标题,

在(3.1,0.05)处标注’t’,利用 axis 调整坐标轴在一个合适的范围,便于观察波形。 头文件:function f=Heaviside(t) f=(t>0); 调用: >> y=sym('exp(-1.5*t)*Heaviside(t)');ezplot(y) >> text(3.1,exp(-1.5*3.1)*Heaviside(3.1),'\leftarrowexp(-1.5*t)*Heaviside(t)=0.05') >> axis([0 5 -1 1])

3. 绘制δ (t-2),-1<t<5 的波形。 头文件: function chongji(t1,t2,t0) dt=0.01; t=t1:dt:t2; n=length(t); x=zeros(1,n); x(1,(-t0-t1)/dt+1)=1/dt; stairs(t,x); axis([t1,t2,0,1.2/dt])

title('单位冲激信号') 调用: chongji(-1,5,-2)

4. 绘制ε (k-3),-1≤k≤5 及ε (k+1) ,-5≤k≤2。 头文件 function jyxulie(k1,k2,k0) k=k1:-k0-1; kk=-k0:k2; n=length(k); nn=length(kk); u=zeros(1,n); uu=ones(1,nn); stem(kk,uu,'filled') hold on stem(k,u,'filled') hold off axis([k1,k2,0,1.5]) title('单位阶跃序列') 调用 jyxulie(-1,5,-3)

%k0 前信号赋值为零 %k0 后信号赋值为一

jyxulie(-5,2,1)

5. 考虑下面 3 个信号: f1(n)=cos(2π n/N)+2cos(3π n/N) f2(n)=2cos(2n/N)+2cos(3n/N) f3(n)=cos(2π n/N)+3cos(5π n/N) 假设对每个信号 N=6。试确定上述信号是否是周期的。如果是,则确定信号的周期,并

画图表示出该信号的两个周期;如果不是周期的,在[0,4N]的范围内画出该信号,并说明 原因。 答:f1(n)=cos(2π n/N)+2cos(3π n/N)是周期的。周期为 12 代码 >> n=0:24; >> subplot(2,2,1) >> stem(n,cos(n*2*pi/6)+2*cos(n*3*pi/6),'filled')

f2(n)=2cos(2n/N)+2cos(3n/N) 非周期序列 f3(n)=cos(2π n/N)+3cos(5π n/N)周期序列 周期为 60 代码 >> >> >> >> >> >> >> >> n=0:24; subplot(2,1,1) stem(n,2*cos(n*2/6)+2*cos(n*3/6),'filled') title('2*cos(n*2/6)+2*cos(n*3/6)') n=0:120; subplot(2,1,2) stem(n,cos(n*2*pi/6)+3*cos(pi*n*5/6),'filled') title('cos(n*2*pi/6)+3*cos(pi*n*5/6)')

四、思考题 1. 观察例 2-1 的执行结果,当把时间间隔 p 取得更小(例如为 0.02)时,观察执行结 果,比较两结果用何不同,为什么? 2、例 2-3 中的 hold on 和 hole off 命令的作用是什么?

五、简述本次实验的体会和建议

实验三 信号的时域运算、 时域变换及 MATLAB 实现

一、实验目的
1、 掌握信号时域运算的 MATLAB 实现方法。

2、 掌握信号时域变换的 MATLAB 实现方法

二、实验原理
信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相 及信号的尺度变换 (一). 连续信号的时域运算与时域变换 如前所述,MATLAB 可以有两种方法来表示连续信号。用这两种方法均可实现连续信 号的时域运算和变换,但用符号运算的方法则较为简便。 1. 相加 s=symadd(f1,f2)或 s=f1+f2 ezplot(s) 2. 相乘 w=symmul(f1,f2)或 w=f1*f2 ezplot(w) 3. 移位 y=subs(f,t,t-t0); ezplot(y) 4.反折 y=subs(f,t,-t); ezplot(y) 5. 尺度变换 y=subs(f,t,a*t); ezplot(y) 对于以上的命令,可在画图命令之后加入坐标轴的调整 axis 等命令,以使画出的图形 更清晰、直观。 (二.) 离散序列的时域运算及时域变化 对于离散序列来说,序列相加、相乘是将两序列对应时间序号的值逐项相加或相乘,平 移、反折及倒相变化与连续信号的定义完全相同,这里就不再赘述。但需要注意,与连续信 号不同的是,在 MATLAB 中,离散序列的时域运算和变换不能用符号运算来实现,而必须 用向量表示的方法,即在 MATLAB 中离散序列的相加、相乘需表示成两个向量的相加、相 乘,因而参加运算的两序列向量必须具有相同的维数。 1. 离散序列相加及其结果可视化的实现 在该函数中,将要进行相加运算的二序列向量通过补零的方式成为同维数的二序列向

量,因而在调用该函数时,要进行相加运算的二序列向量维数可以不同: function[f,k]=lsxj(f1,f2,k1,k2) %实现 f(k)=f1(k)+f2(k), f1、f2、k1、k2 是参加运算的二离散序列及其对应的时间序 列向量,f 和 k 为返回的和序列及其的时间序列向量 k=min(min(k1),min(k2)):max(max(k1),max(k2)); s1=zeros(1,length(k));s2=s1; s1(find((k>=min(k1))&(k<=max(k1))==1))=f1; %构造和序列的长度 %初始化新向量 %将 f1 中在和序列范围内但又无 定义的点赋值为零 s2(find((k>=min(k2))&(k<=max(k2))==1))=f2; %将 f2 中在和序列范围内但又无 定义的点赋值为零 f=s1+s2; stem(k,f,’filled’) axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)]) %坐标轴显示范围 %两长度相等序列求和

三、上机练习
1、将实验原理中提到的例子在计算机上全部练习一遍;

?1 ? 4 (t ? 1) ? 4 ? t ? 0 ? 2、已知信号 f (t ) ? ? 1 0 ? t ? 2 ,画出 f (t )及f (?2t ? 4) 的波形; ? 0 其它 ? ?
解;

3. 已知两个连续信号 信号的波形: 1) f 3 (t ) 3) 解;

f1 (t ) ? ?t,0 ? t ? 1, f 2 (t ) ? sin(2?t ) ,用 MATLAB 绘出下列 ? f1 (?t ) ? f1 (t )
2) f 4 (t ) 4)

? ?[ f1 (?t ) ? f1 (t )]

f 5 (t ) ? f 2 (t ) ? f 3 (t )

f 6 (t ) ? f1 (t ) ? f 2 (t )

4、 离散序列

f (k ) ? {?,0,1,2, 3 ,3,3,3,0, ?} , MATLAB 绘出下列序列的波形。 用
?

1) 3) 解: (1)

f (k ? 2)? (k ) f (?k ? 2)

2) 4)

f (?k ) f (k ? 2)? (k ? 2)

(2)

(3)

(4)

四、思考题
在对信号进行平移、反折和尺度变换时,运算顺序对结果是否有影响?在运算中应该 注意什么?

五、简述本次实验的体会和建议。

实验四
一、实验目的

离散序列卷积和的 MATLAB 实现

1. 掌握卷积和的计算机编程方法,利用 MATLAB 实现两个离散序列的卷积和; 2. 利用卷积和求离散系统的响应,观察、分析系统的时域特性。

二、实验原理
两个离散序列卷积和的定义为

f (k ) ? f 1 (k ) * f 2 (k ) ?

i ? ??

? f (i) ? f
1

?

2

(k ? i )

(4.1)

定义式可以看作是:将序列 f 2 (i ) 的时间轴反并将其移位 k 个样本,然后将移位后的

f 2 (k ? i) 乘以 f1 (i) 并在 i 上将所得到的乘积序列相加。这种说法直接来自离散时间系统的
线性和时不变性质。信号

f1 (k ) 可以看成是由延时和加权脉冲的线性叠加所构成,因为一

个 LTI 系统能够用它对单个脉冲的响应来表示, 那么一个 LTI 系统的输出就应该相对于系统 对构成

f1 (k ) 的每一个延时和加权脉冲的叠加。在数学上,这个结果就是卷积和。
f (k ) ?

在离散信号与系统的分析过程中,我们有两个与卷积和相关的重要结论,这就是: 1)

i ? ??

? f (i) ? ? (k ? i) ? f (k ) * ? (k ) ,即离散序列可分解为一系列幅

?

度由

f (k ) 决定的单位序列 ? (k ) 及其移位序列之和。
2)对线性时不变系统,设其输入序列为

f (k ) ,单位响应为 h(k ) ,其零状态响应为

y(k ) ,则有: y (k ) ?

i ? ??

? f (i) ? h(k ? i) ? f (k ) * h(k )

?

可见,离散序列卷积和的计算对进行离散信号与系统的分析具有非常重要的意义。

f1 (k ) 在区间 n1 ~ n2 非零, f 2 (k ) 在区间 m1 ~ m2 非零,则 f1 (k ) 的时域宽 度为 L1 ? n2 ? n1 ? 1,f 2 (k ) 的时域宽度为 L2 ? m2 ? m1 ? 1。 由卷积和的定义可得, 序列 f (k ) ? f1 (k ) * f 2 (k ) 的时域宽度为 L ? L1 ? L2 ? 1,且只在区间( n1 + m1 ) ~ n1 + m1 +( L1 ? L2 )- 2 非零。因此,对于 f1 (k ) 和均为有限期间非零的情况,我们只 需要计算序列 f (k ) 在区间( n1 + m1 )~ n1 + m1 +( L1 ? L2 )- 2 的序列值,便可以表征 整个序列 f (k ) 。
设序列 MATLAB 的 conv ) ( 函数可以帮助我们快速求出两个离散序列的卷积和。 ( ) conv 函数的调用格式为: f=conv (f1,f2 )

f1 (k ) 的非零样值点的行向量, f 2 为包含序列 f 2 (k ) 的非零样值 点的行向量,向量 f 则返回序列 f (k ) ? f1 (k ) * f 2 (k ) 的所有非零样值点行向量。
其中 f 1 为包含序列

f (k ) ? f1 (k ) * f 2 (k ) 的实用函数 dconv()程序,该程序在计算出卷积和 f (k ) 的同时,还绘出序列 f1 (k ) 、 f 2 (k ) 及 f (k ) 的时域波形图,并返回 f (k ) 的非零样值点的对应向量。
下面是利用 MATLAB 计算两离散序列卷积和 function [f,k]=dconv(f1,f2,k1,k2) %The function of computef=f1*f2 %f 卷积和序列 f(k)对应的非零样值向量 %k 序列 f(k)的对应序号向量 %f1 序列 f1(k)非零样值向量 %f2 序列 f2(k)非零样值向量 %k1 序列 f1(k)的对应序号向量 %k2 序列 f2(k)的对应序号向量 f=conv(f1,f2) k0=k1(1)+k2(1); k3=length(f1)+length(f2)-2; k=k0:k0+k3; subplot(2,2,1); stem(k1,f1) title('f1(k)') xlabel('k') ylabel('f1(k)') subplot(2,2,2); stem(k2,f2) title('f1(k)') xlabel('k') ylabel('f2(k)') subplot(2,2,3); stem(k,f); title('f1(k)与 f2(k)的卷积和 f(k)') xlabel('k') ylabel('f(k)') h=get(gca,'position'); h(3)=2.5*h(3); set(gca,'position',h) %将第三个子图的横坐标范围扩为原来的 2.5 倍 %在子图 3 绘序列 f(k)的波形 %在子图 2 绘序列 f2(k)的波形 %在子图 1 绘序列 f1(k)的波形 %计算序列 f1 与 f2 的卷积和 f %计算序列 f 非零样值的起点位置 %计算卷积和 f 非零样值的宽度 %确定卷积和 f 非零样值的序号向量

三、上机练习
1、将实验原理中提到的例子在计算机上全部练习一遍。 2. 己知某 LTI 离散系统, 其单位响应 h(k)=ε (k)-ε (k-4), 求该系统在激励为 f(k)= ε (k)ε (k-3)时的零状态响应 y(k),并绘出其时域波形图。 M 函数 ① function [f,k]=dconv(f1,f2,k1,k2) %The function of computef=f1*f2 %f 卷积和序列 f(k)对应的非零样值向量 %k 序列 f(k)的对应序号向量 %f1 序列 f1(k)非零样值向量 %f2 序列 f2(k)非零样值向量 %k1 序列 f1(k)的对应序号向量 %k2 序列 f2(k)的对应序号向量 f=conv(f1,f2) %计算序列 f1 与 f2 的卷积和 f k0=k1(1)+k2(1); %计算序列 f 非零样值的起点位置 k3=length(f1)+length(f2)-2; %计算卷积和 f 非零样值的宽度 k=k0:k0+k3; %确定卷积和 f 非零样值的序号向量 subplot(2,2,1); stem(k1,f1) %在子图 1 绘序列 f1(k)的波形 title('f1(k)') xlabel('k') ylabel('f1(k)') subplot(2,2,2); stem(k2,f2) %在子图 2 绘序列 f2(k)的波形 title('f1(k)') xlabel('k') ylabel('f2(k)') subplot(2,2,3); stem(k,f); %在子图 3 绘序列 f(k)的波形 title('f1(k)与 f2(k)的卷积和 f(k)') xlabel('k') ylabel('f(k)') h=get(gca,'position'); h(3)=2.5*h(3); set(gca,'position',h) %将第三个子图的横坐标范围扩为原来的 2.5 倍 调用 >> h=[1,1,1,1,0]; >> k1=[0,1,2,3,4]; >> f=[1,1,1,0]; >> k2=[0,1,2,3]; >> [f,k]=dconv(h,f,k1,k2)

3.如果上题 h(k)=ε (k),重作上题。 (提示:时间序列无限长时,必须将其进行截断, 如只保留 100 个样值点) >> h=ones(1,50); >> f=[1,1,1,0]; >> f=conv(h,f) >> plot(f)

实验五
一、实验目的

周期信号傅里叶级数

1.用 MATLAB 实现周期信号傅里叶级数分解与综合。 2.利用 MATLAB 对周期信号进行频谱分析。

二、 实验原理
任何满足狄里赫里条件的周期信号,都可以表示成三角形式或指数形式的傅里叶级数 展开式。

f (t ) ?
(5.1)

n ? ??

?

?

Fne jn?t ?

? ? a0 ? ? an cos(n?t ) ? ? bn sin(n?t ) 2 n ? ?? n ? ??

an ?
(5.2)

2 ? 2 ? ??? f (t ) cos( n?t )dt , bn ? T ??? f (t ) sin( n?t )dt T

一般来说, 傅里叶级数有无限个非零值, 即任何具有有限个间断点的周期信号都一定有 一个无限非零系数的傅里叶级数表示。 但对数值计算来说, 这是无法实现的。 在实际应用中, 我们可以用有限项的傅里叶级数求和来逼近。即对有限项和:

f (t ) ?
(5.3)

n?? N

? Fe
n

N

jn?t

?

N a0 N ? ? an cos(n?t ) ?? bn sin(n?t ) 2 n ?1 n ?1

当 N 值取得较大时,上式就是原周期信号 f (t ) 的一个很好的近似。上式常称作截断傅里叶 级数表示。

三、上机练习
1、将例 5-1 在计算机上练习一遍,观察运行结果是否正确; 解; function [A_sym,B_sym]=CTFShchsym syms t n k x T=5;tao=0.2*T;a=0.5; if nargin<4;Nf=6;end if nargin<5;Nn=32;end x=time_fun_x(t); A0=2*int(x,t,-a,T-a)/T; As=int(2*x*cos(2*pi*n*t/T)/T,t,-a,T-a); Bs=int(2*x*sin(2*pi*n*t/T)/T,t,-a,T-a); A_sym(1)=double(vpa(A0,Nn)); for k=1:Nf A_sym(k+1)=double(vpa(subs(As,n,k),Nn));

B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn)); end if nargout==0 c=A_sym;disp(c) d=B_sym;disp(d) t=-8*a:0.01:T-a; f1=0.4/2+0.3742.*cos(2*pi*1*t/5)+0.*sin(2*pi*1*t/5); f2=0.3027.*cos(2*pi*2*t/5)+0.*sin(2*pi*2*t/5); f3=0.2018.*cos(2*pi*3*t/5)+0.*sin(2*pi*3*t/5); f4=0.0935.*cos(2*pi*4*t/5)+0.*sin(2*pi*4*t/5); f5=-0.0624.*cos(2*pi*6*t/5)+0.*sin(2*pi*6*t/5); f6=f1+f2; f7=f6+f3; f8=f7+f4+f5; subplot(2,2,1) plot(t,f1),hold on y=time_fun_e(t) plot(t,y,'r:') title('周期矩形波的形成—基波') axis([-4,4.5,-0.5,1.3]) subplot(2,2,2) plot(t,f6),hold on y=time_fun_e(t) plot(t,y,'r:') title('周期矩形波的形成—基波+2 次谐波') axis([-4,4.5,-0.5,1.3]) subplot(2,2,3) plot(t,f7),hold on y=time_fun_e(t) plot(t,y,'r:') title('基波+2 次谐波+3 次谐波') axis([-4,4.5,-0.5,1.3]) subplot(2,2,4) plot(t,f8),hold on y=time_fun_e(t) plot(t,y,'r:') title('基波+2 次谐波+3 次谐波+4 次谐波+6 次谐波') axis([-4,4.5,-0.5,1.3]) end

function x=time_fun_x(t) h=1; x1=sym('Heaviside(t+0.5)')*h; x=x1-sym('Heaviside(t-0.5)')*h;

function y=time_fun_e(t) a=0.5;T=5;h=1;tao=0.2*T;t=-8*a:0.01:T-a; e1=1/2+1/2.*sign(t+tao/2); e2=1/2+1/2.*sign(t-tao/2); y=h.*(e1-e2);

2、 修改例 5-1,将周期信号分解为前 10 次谐波的叠加,观察运行结果,能得出什么结论? 解: function [A_sym,B_sym]=CTFShchsym1 syms t n k x T=5;tao=0.2*T;a=0.5; if nargin<4;Nf=9;end if nargin<5;Nn=32;end x=time_fun_x(t); A0=2*int(x,t,-a,T-a)/T; As=int(2*x*cos(2*pi*n*t/T)/T,t,-a,T-a); Bs=int(2*x*sin(2*pi*n*t/T)/T,t,-a,T-a); A_sym(1)=double(vpa(A0,Nn)); for k=1:Nf A_sym(k+1)=double(vpa(subs(As,n,k),Nn)); B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn)); end if nargout==0 c=A_sym;disp(c)

d=B_sym;disp(d) t=-8*a:0.01:T-a; f1=0.4/2+0.3742.*cos(2*pi*1*t/5)+0.*sin(2*pi*1*t/5); f2=0.3027.*cos(2*pi*2*t/5)+0.*sin(2*pi*2*t/5); f3=0.2018.*cos(2*pi*3*t/5)+0.*sin(2*pi*3*t/5); f4=0.0935.*cos(2*pi*4*t/5)+0.*sin(2*pi*4*t/5); f5=-0.0624.*cos(2*pi*6*t/5)+0.*sin(2*pi*6*t/5); f6=-0.0865.*cos(2*pi*7*t/5)+0.*sin(2*pi*7*t/5); f7=-0.0757.*cos(2*pi*8*t/5)+0.*sin(2*pi*8*t/5); f8=- 0.0416*cos(2*pi*9*t/5)+0.*sin(2*pi*9*t/5); f9=f1+f2; f10=f9+f3; f11=f10+f4+f5; f12=f11+f6; f13=f12+f7+f8; subplot(2,3,1) plot(t,f1),hold on y=time_fun_e(t) plot(t,y,'r:') title('周期矩形波的形成—基波') axis([-4,4.5,-0.5,1.3]) subplot(2,3,2) plot(t,f9),hold on y=time_fun_e(t) plot(t,y,'r:') title('周期矩形波的形成—基波+2 次谐波') axis([-4,4.5,-0.5,1.3]) subplot(2,3,3) plot(t,f10),hold on y=time_fun_e(t) plot(t,y,'r:') title('基波+2 次谐波+3 次谐波') axis([-4,4.5,-0.5,1.3]) subplot(2,3,4) plot(t,f11),hold on y=time_fun_e(t) plot(t,y,'r:') title('基波+2 次谐波+3 次谐波+4 次谐波+6 次谐波') axis([-4,4.5,-0.5,1.3]) subplot(2,3,5) plot(t,f12),hold on y=time_fun_e(t) plot(t,y,'r:')

title('基波+2 次谐波+3 次谐波+4 次谐波+6 次谐波+7 次谐波') axis([-4,4.5,-0.5,1.3]) subplot(2,3,6) plot(t,f13),hold on y=time_fun_e(t) plot(t,y,'r:') title('基波+2 次谐波+3 次谐波+4 次谐波+6 次谐波+7 次谐波+8 次谐波+9 次谐波') axis([-4,4.5,-0.5,1.3]) end function x=time_fun_x(t) h=1; x1=sym('Heaviside(t+0.5)')*h; x=x1-sym('Heaviside(t-0.5)')*h; function y=time_fun_e(t) a=0.5;T=5;h=1;tao=0.2*T;t=-8*a:0.01:T-a; e1=1/2+1/2.*sign(t+tao/2); e2=1/2+1/2.*sign(t-tao/2); y=h.*(e1-e2);

3、观察例 5-1 运行结果中脉冲宽度与频谱的关系
解:由图可见,由于周期相同,因而相邻谱线的间隔相同,脉冲跨度越窄,其频谱包络线第一个零点的频率越高, 即信号带宽越宽,频带内所含的分量越多。信号的频带宽度与脉冲宽度成反比。

4、观察例 5-1 运行结果中周期与频谱的关系
解:频谱包络线的零点所在位置不变,而当周期增长时,相邻谱线的间隔减小,频谱变密。如果周期无线增长, 相邻谱线的间隔将趋于零,周期信号的离散频谱就过渡为非周期信号的连续频谱。


相关文章:
matlab实验报告
MATLAB 程序设计语言 实验报告 专业及班级 ___ 姓学日名号期 ___ ___ ___ 实验一 MATLAB 的基本使用 一、 实验目的 1.了解 MATALB 程序设计语言的基本特...
MATLAB实验报告 2
7 西安建筑科技大学 实验报告用纸 实验二:MATLAB 矩阵分析与处理 日期: 2011 年 3 月 11 日 评分:___ 班级:自动化 1001 姓名:韩永龙 一、实验目的 1.掌握...
MATLAB实验报告
学生实验报告 (理工类) 课程名称:计算机建模与仿真 专业班级: 10 电气(1)班 ...[0,6*pi]) 四、实验结果与分析通过对 MATLAB 的进一步学习,主要学习的还是...
matlab实验心得总结
matlab实验心得总结_工学_高等教育_教育专区。matlab实验总结和心得通过《matlab 仿真》实验使我学习掌握了许多知识。首先是对 matlab 有了一个全新的 认识,其次是对...
参考答案Matlab实验报告
参考答案Matlab实验报告_工学_高等教育_教育专区。上机用的命令实验一一、 实验目的: 实验目的: Matlab 基础知识 1. 熟悉启动和退出 Matlab 的方法。 2. 熟悉 ...
MATLAB实验报告
MATLAB实验报告_其它_高等教育_教育专区。明德致远 笃行务实 实 验 报 告 课程名称 专业班级 姓学名号 MATLAB 基础及应用 电子 xxxx 电气与信息学院 明德致远 笃...
matlab基本操作实验报告
matlab基本操作实验报告_工学_高等教育_教育专区。matlab基本操作实验报告,包括matlab入门介绍、M文件的建立和线性规划的操作 实验一 matlab 基本操作一、 实验目的...
MATLAB实验报告
MATLAB实验报告_数学_自然科学_专业资料。本科 实验 报告 课 程:MATLAB 编程与应用 学生姓名: 指导教师: 学院:信息科学与工程学院 专业班级: 目 录 实验一 熟悉...
MATLAB实验报告
MATLAB实验报告_调查/报告_表格/模板_实用文档。MATLAB 实验报告学院:电气信息学院 专业:自动化 组员:于亚斌 2013141442058 周波 2013141442004 实验一:MATLAB 数值运算...
matlab实验报告
matlab实验报告_工学_高等教育_教育专区。MATLAB 与工程计算课 程设计报告 专业班级学号姓名 指导教师 学期 电气工程及其自动化 佘青山\罗艳斌 大一下 2014.6.27...
更多相关标签:
matlab上机实验报告 | matlab实验报告总结 | matlab实验报告模板 | matlab | matlab实验报告心得 | matlab实验答案 | matlab实验心得 | matlab实验报告答案 |