数字信号处理实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;