matlab序列地运算.docx
- 文档编号:5546402
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:6
- 大小:15.06KB
matlab序列地运算.docx
《matlab序列地运算.docx》由会员分享,可在线阅读,更多相关《matlab序列地运算.docx(6页珍藏版)》请在冰豆网上搜索。
matlab序列地运算
实验三序列的运算
一、实验容
1、序列的乘积:
仿真并完成例题1.22
2、序列的移位:
编写seqshift()函数,实现序列的移位,并作图验证。
3、序列的卷积:
编写convwthn()函数,实现具体序列的卷积,并且进行理论计算,比较结果。
4、序列的相关:
仿真并完成例题1.24
二、MATLAB仿真
1、序列的乘积
解:
function[y,n]=seqadd(x1,n1,x2,n2)
n=min((n1),min(n2)):
max((n1):
max(n2));
y1=zeros(1,length(n));y2=y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1+y2;
function[y,n]=seqmult(x1,n1,x2,n2);
n=min((n1),min(n2)):
max((n1):
max(n2));
y1=zeros(1,length(n));y2=y1;y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1.*y2;
代码:
clc;clearall;
x1=[1,3,5,7,6,4,2,1];ns1=-3;
x2=[4,0,2,1,-1,3];ns2=1;
nf1=ns1+length(x1)-1;
nf2=ns2+length(x2)-1;
n1=ns1:
nf1;
n2=ns2:
nf2;
n=min(ns1,ns2):
max(nf1:
nf2);
y1=zeros(1,length(n));y2=y1;
y1(find((n>=ns1)&(n<=nf1)==1))=x1;
y2(find((n>=ns2)&(n<=nf2)==1))=x2;
ya=y1+y2;
ym=y1.*y2;
subplot(221);
stem(n1,x1,'*','r');
ylabel('x1(n)');
grid;
subplot(223);
stem(n2,x2,'*','r');
xlabel('n');
ylabel('x2(n)');
grid;
subplot(222);
stem(n,ya,'*','r');
ylabel('y1(n)+y2(n)');
grid;
subplot(224);
stem(n,ym,'*','r');
xlabel('n');
ylabel('y1(n)*y2(n)');
grid;
如图1所示。
clc;clearall;
x1=[1,3,5,7,6,4,2,1];
ns1=-3;
x2=[4,0,2,1,-1,3];
ns2=1;
nf1=ns1+length(x1)-1;
nf2=ns2+length(x2)-1;
n1=ns1:
nf1;
n2=ns2:
nf2;
[ya,n]=seqadd(x1,n1,x2,n2);
[ym,n]=seqmult(x1,n1,x2,n2);
subplot(221);
stem(n1,x1,'*','r');
ylabel('x1(n)');
grid;
subplot(223);
stem(n2,x2,'*','r');
xlabel('n');
ylabel('x2(n)');
grid;
subplot(222);
stem(n,ya,'*','r');
ylabel('y1(n)+y2(n)');
grid;
subplot(224);
stem(n,ym,'*','r');
xlabel('n');
ylabel('y1(n)*y2(n)');
grid;
图1
2、序列的移位
解:
function[y,ny]=seqshift(x,nx,m)
ny=nx+m;
y=x;
代码:
clc;clearall
x=[1,2,3,4,5];
nx=-2:
2;
m=2;%向右移2个单位
[y,ny]=seqshift(x,nx,m);
subplot(211);
stem(nx,x,'*','r');
title('原序列x(n)');
xlabel('n');
ylabel('x(n)');
subplot(212);
stem(ny,y,'*','r');
title('移位后序列y(n)');
xlabel('n');
ylabel('y(n)');
grid;
如下图2所示:
图2
3、序列的卷积
解:
function[y,ny]=convwthn(x,nx,h,nh)
ny1=nx
(1)+nh
(1);
ny2=nx(end)+nh(end);
y=conv(x,h);
ny=(ny1:
ny2);
代码:
clc;clearall;
x=[1,2,3,-1,-2];
nx=-1:
3;
h=[2,2,1,-1,4,-2];
nh=-3:
2;
[y,ny]=convwthn(x,nx,h,nh);
stem(ny,y,'*','r');
xlabel('n');
ylabel('y(n)');
grid;
x(n)与h(n)相卷积得到的图形如图3所示:
图3
4、序列的相关
解:
function[y,ny]=convwthn(x,nx,h,nh)
ny1=nx
(1)+nh
(1);
ny2=nx(end)+nh(end);
y=conv(x,h);
ny=(ny1:
ny2);
代码:
clc;clearall
x=[2,1,3,2,1,5,1];
nx=1:
7;
y=[2,1,3,4];
ny=1:
4;
N1=length(x)-1;
N2=length(y)-1;
rxy=convwthn(fliplr(y),-ny,x,nx);
k=-(N2):
N1;
stem(k,rxy,'*','r');
xlabel('n');
ylabel('rxy(n)');
title('x(n)与y(n)之间的互相关');
axis([-N2,N1,0,35]);
grid;
图4
三、实验小结
通过这次实验使我知道序列的卷积可以通过matlab实现。
Matlab里本身有丰富的库函数,画图,求卷积各种运算只要调用相应的库函数即可。
本次实验的难点就在conv()函数和各序列长度的计算,如果不注意其中的计算关系很容易出错。
而conv()函数只要写错,后面的图形就不能准确的绘制出来。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 序列 运算
![提示](https://static.bdocx.com/images/bang_tan.gif)