实验一 离散信号及其MATLAB实现

发布时间 : 星期日 文章实验一 离散信号及其MATLAB实现更新完毕开始阅读

实验一 离散信号及其MATLAB实现

一. 实验目的

(1) 熟悉MATLAB的主要操作命令;

(2) 学会离散信号的表示方法及基本操作运算; (3) 掌握简单的绘图命令;

(4) 用MATLAB编程并学会创建函数; 二. 实验原理

1.离散信号表示与运算

在数字信号处理中,所有信号都是离散时间信号——序列,表示为 x(n)={...,x(-1),x(0),x(1),...} -∞

MATLAB一般把普通的一维抽样数据信号即抽样序列表示成向量的形

式。本实验用到的典型信号表示如下: (1)实指数序列 x(n)=a a∈R

MATLAB实现 n=0:N-1; x=a.^n;

(2) 正(余)弦序列 x(n)=Asin(2fπnTS+β) n1≤ n≤ n2 MATLAB实现 n=n1:n2;

x=A*sin(2*pi*f*n*Ts + β); (3) 复指数序列 x(n)=e

(α + jw)n

n

任意n

MATLAB实现

n=0:N-1;

x=exp(( r + j*w)*n); (4)单位阶跃序列:

在MATLAB中可用函数ones(1,N)产生一个由N个1组成的行向量,

实现有限区间的u(n)

x=ones(1,N); (5)单位抽样序列:

在MATLAB中可用函数zero(1,N)产生一个由N个零组成的行向量,实现有限区间

x=zeros(1,N) x(1)=1;

(6) 定义函数格式:例:function [d]=mysum(a,b,c)

2.MATLAB的绘图方法

(1)函数:figure()

figure:创建一个图形窗口并返回它的句柄; (2)子图函数:subplot()

subplot(m, n, p):将窗口划分为m*n的小窗口矩阵,选择第p个为当前绘图窗口并返回句柄.具体窗口的计数是沿着顶部的行进行,然后再到下一行.

(3)绘制离散序列数据杆状图函数:stem()

stem(x, y):在x的制定值处画数据序列y的杆状图。

(4)设置网格线命令:grid

grid ON : 对当前坐标线加上网格线 grid OFF : 撤销网格线

grid : 设置或撤销网格线

(5)添加坐标轴标志函数:xLabel(), yLabel() 三.实验内容

(1)序列的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],起点n=0,求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B,并用stem语句画出A,B,C,D,E,F,G。

(2)用MATLAB实现下列序列:

1) x1(n)=0.8n 0≤n≤15 2) x2(n)=e(0.2+3j) 0≤n≤15

3) x3(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π)

0≤n≤15

(3) 编写函数如stepshift(n0,n1,n2)实现u(n)的移位序列u(n-n0),n1≤n≤n2

(4) x(n)=[1,-1,3,5],起点n=0,产生并绘出下列序列的样本: x1(n)=2x(n+2)-x(n-1)-2x(n)

四.实验代码 (1)n=[0:3]; A= [1 2 3 4]; B= [3 4 5 6];

C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B; figure (1); subplot(3,3,1)

stem (n, A);xlabel (‘n');ylabel('A');grid on; subplot(3,3,2)

stem(n,B);xlabel('n');ylabel('B');grid on; title('序列的运算'); subplot(3,3,3)

stem(n,C);xlabel('n');ylabel('C');grid on; subplot(3,3,4);

stem(n,D);xlabel('n'); ylabel ('D');grid on; subplot(3,3,5)

stem(n,E);xlabel('n');ylabel('E');grid on; subplot(3,3,6)

stem(n,F);xlabel('n');ylabel('F');grid on; subplot(3,3,7)

stem(n,G);xlabel('n');ylabel('G');grid on; (2)clear; close all; n=[0:15]; x1=0.8.^n;

x2=exp((0.2+3*j).*n);

x3=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi); figure(1);

subplot(3,1,1); stem(n,x1); xlabel('n');ylabel('x1'); grid on; title('序列的表示'); subplot(3,1,2);

stem(n,x2); xlabel('n');ylabel('x2'); grid on; subplot(3,1,3);

stem(n,x3); xlabel('n');ylabel('x3'); grid on; (3)函数stepshift定义代码:

function [n,x1]=stepshift(n0,n1,n2) n=n1:n2;

x1=[(n-n0)>=0]; 调用函数代码: clear;close all; n1=0;n2=9;n0=2; N=n2-n1+1; x=ones(1,N);

[n,x1]=stepshift(n0,n1,n2); figure(1);

subplot(2,1,1);

stem(n,x); xlabel('n');ylabel('x'); title('阶跃序列'); subplot(2,1,2);

stem(n,x1); xlabel('n');ylabel('x1'); title('阶跃序列的移位'); (4) 函数sigshift定义:

function[y,n]=sigshift(x,m,n0); =m-n0; y=x;

函数sigadd定义:

function [y,n]=sigadd(x1,n1,x2,n2,x3,n3); m=[min(n1),min(n2),min(n3)] p=[max(n1),max(n2),max(n3)] n=min(m):1:max(p)

y1=zeros(1,length(n));

y2=y1; y3=y1;

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; y3(find((n>=min(n3))&(n<=max(n3))==1))=x3; y=y1+y2+y3;

调用函数代码 :clear; close all; n=[0:3];

x=[1 -1 3 5];

[x11,n11]=sigshift(x,n,-2); [x12,n12]=sigshift(x,n,1); [x13,n13]=sigshift(x,n,0);

[x1,n]=sigadd(2*x11,n11,(-1)*x12,n12,(-2)*x13,n13); figure(1)

stem(n,x1); xlabel('n');ylabel('x1');title('序列相加');grid on; [y,n] =sigshift(x,m,n0) n=m+n0; y=x;

[y,n]=sigadd(x1,n1,x2,n2,x3,n3) m=[min(n1),min(n2),min(n3)] p=[max(n1),max(n2),max(n3)] n=min(m):1:max(p)

y1=zeros(1,length(n)); y2=y1; y3=y1;

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; y3(find((n>=min(n3))&(n<=max(n3))==1))=x3; y=y1+y2+y3; 五.实验结果

实验(1)序列图见附录一 实验(2)序列图见附录二 实验(3)序列图见附录三 实验(4)序列图见附录四 六.实验结果分析

(1)实验一的序列图是离散信号A和B经过序列的加、减、乘、除和乘方运算由stem语句分别绘制C、D、E、F、G以n为x的横坐标的离散序列数据杆状图。

(2)实验二的序列图是分别绘制典型信号实指数序列、正(余)弦序列、复指数序列的三个子函数图且以n为横坐标的离散序列数据杆状图。

(3)实验三的序列图是阶跃序列通过调用stepshift函数使其学列移2个单元绘制得到离散序列数据杆状图。

(4)实验四的序列图是x(n)经过移位函数及相加函数绘制得到离散序列数据杆状图。

联系合同范文客服:xxxxx#qq.com(#替换为@)