数字信号处理实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南昌航空大学实验报告

二○○七 年 月 日

课程名称: 数字信号处理 实验名称: 离散信号及其MATLAB 实现 班级: 姓名: 同组人: 指导老师评定: 签名:

一、实验目的

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

(2) 学会离散信号的表示方法及其基本运算;

(3) 掌握简单的绘图命令;

(4) 用MATLAB 编程并学会创建函数;

二、实验内容

(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 实现下列序列:

①()n n x 8.0= 150≤≤n

②()()n j e n x 32.0+= 150≤≤n

③()()()ππππ1.025.0sin 22.0125.0cos 3+++=n n n x 150≤≤n

(3) 编写函数如()2,1,0n n n stepshift 实现()n u 的移位序列()0n n u -,21n n n ≤≤,绘出该函数的图形。设n1=0,n2=9,n0=2

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

()()()()n x n x n x n x 21221---+=

三、程序清单

(1)

n=0:1:3;

%初始化n 值 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);

%图1 subplot(1,2,1);

%图分割 stem(n,A); %绘制A 序列

title('输入序列A'); %给出该图的标题

subplot(1,2,2);

stem(n,B);

title('输入序列B');

figure(2);

subplot(3,2,1);

stem(n,C);

title('输出序列C');

subplot(3,2,2);

stem(n,D);

title('输出序列D');

subplot(3,2,3);

stem(n,E);

title('输出序列E');

subplot(3,2,4);

stem(n,F);

title('输出序列F');

subplot(3,2,5);

stem(n,G);

title('输出序列G');

图1-1 输入序列A,B

图1-2 输出序列C,D,E,F,G

(2)

clear; close all; %清除内存中变量

n=[0:15]; %初始化n值

x1=(0.8).^n; %通过运算得到x1序列

x2=exp((0.2+3j).*n); %通过运算得到x2序列

x3=3*cos(0.175*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi); %通过运算得到x3序列figure(1); %创建图1

subplot(3,1,1); %子图分割

stem(n,x1); %绘制x1

xlabel('n');ylabel('x1'); %给出x,y轴的文本标注

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;

图1-3 n 8.0、()n j e 32.0+、()()ππππ1.025.0sin 22.0125.0cos 3+++n n

(3)

clear;close all; %清除内存中变量

n1=0;n2=9;n0=2; %设定三个初始值

N=n2-n1+1; %计算序列长度

x=ones(1,N); %给出u(n)序列

[n,x1]=stepshift(n0,n1,n2); %调用stepshift 函数实现u(n)序列移位

figure(1);

subplot(2,1,1);

stem(n,x);xlabel('n');ylabel('x');title('阶跃序列'); %绘制u(n)序列

subplot(2,1,2);

stem(n,x1);xlabel('n');ylabel('x1');title('阶跃序列的移位'); %绘制移位后的序列

function [n,x1]=stepshift(n0,n1,n2) %移位函数的实现

n=n1:n2; %初始化n 值

x1=[(n-n0)>=0]; %通过关系运算实现在一定范围内的序列的移位

图1-4 序列的移位

(4)

clear; close all; %清除内存中变量

n=0:3; %初始化n值

x=[1 -1 3 5]; %初始化x序列

[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;

function[y,n]=sigshift(x,m,n0) %sigshift函数实现移位

n=m+n0;

y=x;

function [y,n]=sigadd(x1,n1,x2,n2,x3,n3) %sigadd函数实现不同范围的序列的叠加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;

相关文档
最新文档