《数字信号处理教程》利用matlab实现序列的运算

目录

一、实验名称

二、实验器材

三、实验目的

四、实验原理

五、实验内容及结果

六、实验收获


一、实验名称

序列运算的matlab实现。

二、实验器材

安装有matlab软件的电脑、《数字信号处理教程》课本。

三、实验目的

1. 了解复指数序列和它延扩周期得到的序列的图形和实现方法,并掌握matlab产生常用离散时间信号的编程方法;

2. 了解length函数、find函数和mod函数的用法,并能够在实验时很好的实现序列。

四、实验原理

1.常用序列的matlab实现

(1)随机序列。

当序列的取值不能用确定的数学表达式来描述时,这种序列就称为随机序列,MATLAB中,有两种随机序列(实际是伪随机序列)可供调用。

rand:此函数产生均值为0.5,幅度在0~1之间均匀分布的随机序列。调用格式是rand(1,N)或rand(NXM),前者产生N点随机序列,后者产生NXM随机矩阵。

randn:此函数产生均值为0,方差为1,服从正态(高斯)分布的白噪声序列。调用格式同上,有randn(1,N)和randn(NXM)两种,解释同上。

(2)周期序列。
    设x(n),0<n<N-1,MATLAB可利用xtide(n)把它拓展成K个周期的周期序列,有两种办法。

①简单复制。

即原x(n)长度为N=length(x),复制K次得到xtide长度为K*N,但K太大时容易出错。
②用求余数的方法(模运算)。
函数n1=mode(n.N)完成模运算nl=(n,mod,N)=((n)),即完成nl=n+KN,0<nl<N-1,K整数,即余数n1在0到N-1之间。把这一运算用到位置向量上,

就可实现有限长序列的周期延拓。

设x的起始位置为0,长度为N可用以下语句:
nxtide=0:K·N-1;
xtide=x(mod(nxtide,N)+1);

第二条语句中,由于mod(nxtide,N)的值永远在0到N-1之间,而MATLAB的规则是x的下标为nx=[1:N],故上面的后一条语句(即第二条语句)中必须把mod函数的结果加1才对。

2. 序列运算的MATLAB实现。

(1)序列之和。

将两序列x1、x2位置序号相同的样值相加,必须使x1、x2的位置向量的

起点、终点相同,因而序列的长度相同,故有可能要补“零值”。
首先,使x1、x2有同样的位置向量,因而要注意MATLAB的下标运算,将

x1的位置向量n1及x2的位置向量n2都变成相同的位置向量n,显然,min(n)应等于min(nl)和min(n2)中的小者。max(n)应等于max(nl)和max(n2)中的大者。随后,将x1及x2放到扩展后的位置向量n上,由于n比n1、n2都可能长,故应将x1、x2长度加长,加长后分别用y1,y2表示,即将x1、x2放到位置向量n的对应位置上,将多余之处的元素置零。

(2)序列之积。

将函数命名为seqmult,将函数的头语句改为function [y,n]=seqmult(x1,x2,n1,n2), 且将上面的第六行换成y=y1*y2,则得到序列的乘积运算。可以看出在一些情况下,序列的位置向量对序列的运算起着重要作用。

五、实验内容及结果

编制程序使用matlab实现复指数序列、延扩周期序列和两序列之和与之积的正确结果和产生图形。

(一)实验一:用编程产生下列复指数序列x(n)=e^[(aj-b)n],其中-1<=n<=10,a=0.4,b=0.6。

1.实验代码

%复指数序列1



n=0:10;                       %定义n的范围

x=exp((0.4*j-0.6)*n);



%产生实部图像

subplot(2,1,1);               %定义图像窗口为2x1(2行1列),坐标为(1,1)(第一行第一列)

stem(n,real(x),'b.');         %绘制实部离散图像,并设置线为b(蓝色)点线型

axis([-1,10,min(real(x))-0.1,1.2*max(real(x))]);      %定义图像1的横轴、纵轴范围

title('复指数序列实部图像');   %对图像主题的说明

xlabel('n');                  %对横轴进行说明

ylabel('real(x)');            %对纵轴进行说明

grid on;                      %打开图像网格



%产生虚部图像

subplot(2,1,2);               %定义图像窗口为2x2(2行2列),坐标为(2,1)(第二行第一列)

stem(n,imag(x),'m.');         %绘制虚部离散图像,并设置线为m(洋红色)点线型

axis([-1,10,min(imag(x))-0.1,1.3*max(imag(x))]);      %定义图像2的横轴、纵轴范围

title('复指数序列虚部图像');   %对图像主题的说明

xlabel('n');                  %对横轴进行说明

ylabel('imag(x)');            %对纵轴进行说明

grid on;                      %打开图像网格

2.实验结果

   (二)实验二:x(n)=[1,2,3,4],求它延后5个周期所得到的序列。

1.实验代码

%周期序列



x=[1,2,3,4];

N=length(x);

k=5;

nx=0:N-1;

ny=0:(k*N-1);

y=x(mod(ny,N)+1);



subplot(2,1,1);         %定义图像窗口为2x1(2行1列),坐标为(1,1)(第一行第一列)

stem(nx,x,'m.');        %绘制离散图像,并设置线为m(洋红色)点线型

axis([-1,N,0,5]);       %定义图像1的横轴、纵轴范围

title('周期序列');      %对图像主题的说明

xlabel('nx');           %对横轴进行说明

ylabel('x');            %对纵轴进行说明

grid on;                %打开图像网格



subplot(2,1,2);         %定义图像窗口为2x2(2行2列),坐标为(2,1)(第二行第一列)

stem(ny,y,'r.');        %绘制离散图像,并设置线为r(红色)点线型

axis([-1,k*N,0,5]);     %定义图像2的横轴、纵轴范围

title('周期序列');      %对图像主题的说明

xlabel('ny');           %对横轴进行说明

ylabel('y');            %对纵轴进行说明

grid on;                %打开图像网格

2.实验结果

(三)实验三:已知两个序列为x1(n)=[1,3,5,7,6,4,2,1],起始位置为ns1=-3,x2(n)=[4,0,2,1,-1,3],起始位置为ns2=1,求它们的和ya和乘积yb。

1.实验代码

%序列的matlab实现



x1=[1,3,5,7,6,4,2,1],ns1=-3;             %给定x1和它的起始点位置ns1

x2=[4,0,2,1,-1,3],ns2=1;                %给定x2和它的起始点位置ns2

nf1=ns1+length(x1)-1;                 %求出x1的终点位置nf1

nf2=ns2+length(x2)-1;                 %求出x1的终点位置nf1

n1=ns1:nf1,n2=ns2:nf2;                %定义n1和n2的范围

n=min(ns1,ns2):max(nf1,nf2);           %定义n的范围

y1=zeros(1,length(n));                 %y向量初始化为零

y2=y1;                              %y1,y2序列的初始化

y1(find((n>=ns1)&(n<=nf1)==1))=x1;    %给y1赋值x1

y2(find((n>=ns2)&(n<=nf2)==1))=x2;    %给y2赋值x2

ya=y1+y2,yb=y1.*y2;                 %序列的相加和相乘

subplot(2,2,1),stem(n1,x1,'b.'),title('序列x1(n)'),xlabel('n1'),ylabel('x1'),grid on;

subplot(2,2,2),stem(n2,x2,'r.'),title('序列x2(n)'),xlabel('n2'),ylabel('x2'),grid on;

subplot(2,2,3),stem(n,ya,'m.'),title('序列ya'),xlabel('n'),ylabel('ya'),grid on;

subplot(2,2,4),stem(n,yb,'k.'),title('序列yb'),xlabel('n'),ylabel('xb'),grid on;

2.实验结果

六、实验收获

通过本次实验,我有了许多的收获,主要学会了产生复指数序列的实部和虚部的方法、延扩周期后的序列、两序列之和与之积的方法,以及一些相关函数的用法:real函数、imag函数mod函数、length函数、find函数,还有一些关于自身素质修养:自己的垃圾必须要带走,爱护公共设施(电脑、鼠标等),与同学互相帮助,谦虚学习。

总之,只要积极主动、细心、有耐心,注意理论联系实际、多做多学多问,就会有进步,就会学到更多知识。

  • 5
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值