matlab编程入门实例,实验一、MATLAB编程基础及典型实例.doc

实验十一 离散信号时域分析的MATLAB实现

PAGE

PAGE 60

实验十一 离散信号时域分析的MATLAB实现

一、实验目的

熟悉MATLAB编程方法、常用语句和可视化绘图技术;

掌握序列时域运算的MATLAB编程方法。

二、实验原理

在用MATLAB表示离散信号并将其可视化时,由于矩阵元素个数是有限的,因此无法表示无限长序列;另外,离散信号无法进行符号运算。在MATLAB中,绘制离散序列波形图的专用命令为stem( )。其格式有:

(1)stem(k,f)

在图形窗口中,绘制出样值顶部为空心圆的序列f(k)波形图。

(2)stem(k,f,’fill’)

在图形窗口中,绘制出样值顶部为实心圆的序列f(k)波形图。

下面介绍离散序列的MATLAB表示、基本运算(相加、相乘、平移、反转、尺度变换)、卷积和的实现及其图形显示方法。

1.单位序列?(k)

单位序列的定义:

下面为绘制?(k-k0)波形图的子程序:

function impseq(k1,k2,k0) %单位序列?(k-k0),k0为时移量

图11-1k=k1:k2; %k1,k2为序列的起止序列号

图11-1

n=length(k);

x=zeros(1,n);

x(1,k0-k1+1)=1; %在k0时刻信号赋值为1

stem(k,x,'fill')

axis([k1,k2,0,1.1])

title('单位序列d(k-k0)')

输入如下命令,则可获得单位序列?(k-3)的波形图,如图11-1所示。

impseq(-1,5,3)

2.单位阶跃序列?(k)

单位序列的定义:

下面为绘制?(k-k0)波形图的MATLAB子程序。

function stepseq(k1,k2,k0) %单位阶跃序列,k0为时移量

k=k1:k0-1; %k1,k2为序列的起止序列号

kk=length(k);

图11-2x=zeros(1,kk);

图11-2

stem(k,x,'fill') %绘出k1~k0-1的波形(0值)

hold on

n=k0:k2;

nn=length(n);

x=ones(1,nn); %k0后信号赋值为1

stem(n,x,'fill') %绘出k0~k2的波形(1值)

hold off

axis([k1,k2,0,1.1])

title('单位阶跃序列')

运行如下命令,则可获得单位序列?(k-3)的波形图,如图11-2所示。

stepseq(-1,10,3)

3.序列的相加(减)、相乘运算

对序列向量f1(k)、f2(k)相加或相乘,可以通过补零的方式使f1(k)、f2(k)成为具有相同维数的序列向量s1(k)、s2(k),然后对s1(k)、s2(k)相加或相乘。因此,序列向量f1(k)、f2(k)的维数可以不同。以下函数可实现序列向量f1(k)、f2(k)的相加或相乘运算。

function [f,k]=sigadd(f1,k1,f2,k2)

%实现序列f1,f2的相加,相减,相乘,可据实际需要作选择

%f1,k1;f2,k2是参加运算的序列向量及其时间向量

%f,k作为返回的和(差,积)序列及其时间向量

%将f1,f2转换成等长序列s1,s2

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;

s2(find((k>=min(k2))&(k<=max(k2))==1))=f2;

f=s1+s2; %序列相加

% f=s1-s2; %序列相减

% f=s1.*s2; %序列相乘

stem(k,f,'fill')

axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)])

例11-1.已知序列。编写M文件求。

解:运行如下M文件,可实现,结果如图11-1所示。

图11-1k1=-1:3;

图11-1

f1=[-3 2 3 1 2];

k2=-1:1;

kk=length(k2);

f2=ones(1,kk);

subplot(2,2,1);stem(k1,f1,'fill');title('f1(k)');

subplot(2,2,2);stem(k2,f2,'fill');title('f2(k)');

subplot(2,2,3);[f,k]=sigadd(f1,k1,f2,k2);title('f1(k)+f2(k)')

若要实现序列f1(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值