实验一--常见离散信号的MATLAB产生和图形显示
实验一常见离散信号的MATLAB产生和图形显示
实验一 常见离散信号的MATLA B 产生和图形显示 授课课时:2学时一、实验目的:(1)熟悉MATL A B 应用环境,常用窗口的功能和使用方法。
(2)掌握MATL A B 在时域内产生常用离散时间信号的方法。
(3)掌握离散信号的基本运算。
(4)掌握简单的绘图命令。
二、实验原理:(一)信号的表示和产生① 单位抽样序列⎩⎨⎧=01)(n δ 00≠=n n 如果在时间轴)(n δ上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ0≠=n k n参考程序:例1-1:)2010(()(<<-=n n n x )δclear all n1=-10;n2=20;n0=0;%在起点为n1,终点为n2的范围内,于n0处产生冲激。
n=n1:n2;%生成离散信号的时间序列x=[n==n0];%生成离散信号x (n)stem(n,x);%绘制脉冲杆图xlabel (' n');ylabel ('x(n)');%横坐标和纵坐标的标注说明。
title('Unit Sample Sequen c e');%图形上方标注图名axis([-10 20 0 1.2]);%确定横坐标和纵坐标的取值范围② 单位阶跃序列⎩⎨⎧=01)(n u 00<≥n n 例1-2:)202((u )(<<-=n n n x )clear alln1=-2;n2=20;n0=0;n=n1:n2;%生成离散信号的时间序列x=[n>=n0];%生成离散信号x (n)stem(n,x,'filled ');xlabel ('n');ylabel ('x(n)');title('Unit step Sequen c e');axis([-2 20 0 1.2]);③ 正弦序列)sin()(ϕ+=wn A n x例1-3:一正弦信号的频率为1HZ ,振幅值幅度A 为1V ,在窗口显示2个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号并显示该连续信号和离散信号的波形。
一、基本离散信号的MATLAB产生和图形实现
n=0:n-1;a=0.6;x3=a.^n; %实指数序列
w0=pi/3; ang=pi/15; x4=sin(n*w0+ang);%正弦序列
x5=exp((a+j*w0)*n); %复指数序列
figure(1); %建立一个绘制框
subplot(3,1,1);stem(x1); %绘制单位冲激序列
ylabel('x_1(n)=\delta(n)'); %在Y轴上描述
subplot(3,1,2);stem(x2); %绘制单位阶跃序列
ylabel('x_2(n)=u(n)');
subplot(3,1,3);stem(x3); %绘制实指数序列
ylabel('x_3(n)=0.6^n');xlabel('n');
5、变量名可以由字母、数字和下划线组成。但必须以字母开头。变量名区分大小写。字符长度不超过63。
6、可以编写以.m为扩展名的文件:有两种形式,一是命令叠加;二是function定义函数形式,不需要end结尾。
3、直接表达法描述序列:
n=50; %序列长度
x1=[1,zeros(1,n-1)]; %单位冲激序列
figure(2);
subplot(2,1,1);stem(x4); %绘制正弦序列
ylabel('x_4(n)=sin(\pin/3+\pi/15)');
subplot(2,1,2);stem(abs(x5)); %绘制复指数序列
ylabel('x_5(n)=e^(^0^.^6^+^j^*^\pi^/^3^)^*^n');xlabel('n');%结果1-1和1-2
常见离散信号的MATLAB产生和图形显示实验报告
常见离散信号的MATLAB产⽣和图形显⽰实验报告实验⼀常见离散信号的MATLAB 产⽣和图形显⽰⼀实验⽬的加深对常⽤离散信号的理解⼆实验原理及实验内容1.单位抽样序列=01)(n δ 00≠=n nMATLAB 程序:%单位抽样序列t=-20:20; %产⽣⼀个-20到20的矩阵 x=zeros(1,41); %产⽣⼀个全为1的矩阵 x(21)=1; %x 的第21个元素为1 stem(t,x); %绘制x 的序列图 grid on; %画⽹格线 title('单位抽样序列') %加标题绘图:2.单位阶越序列01)(n u 00<≥n nMATLAB 程序: %单位阶越序列x=[zeros(1,20),ones(1,21)]; %产⽣⼀个前20个元素为0,后21个元素为1的数组 stem(t,x); %绘制x 的序列图 grid on; %画⽹格线title('单位阶越序列') %加标题绘图:3.正弦序列)/2sin()(?π+=Fs fn A n xMATLAB 程序: %正弦序列n=0:100; %产⽣⼀个0到100的矩阵 fai=pi/4; %相位赋值 A=2; %振幅赋值 f=1/50; %频率赋值Fs=1; %采样频率赋值 x=A*sin(2*pi*f*n/Fs+fai) ; %⽣成正弦序列x stem(n,x); %绘制x 的序列图 axis([0 50 -3 3]); %限定坐标轴范围 title('正弦序列'); %加标题绘图:4.复正弦序列jn)(=enx?MATLAB程序:%复正弦序列n=0:20;%产⽣⼀个0到20的矩阵x=exp(j*pi/20*n);%⽣成复正弦序列subplot(1,2,1),stem(n,real(x));%绘制x的实数部分title('复正弦序列实部');%加标题grid on; %画⽹格线subplot(1,2,2),stem(n,imag(x),'filled');%绘制x的虚部部分title('复正弦序列虚部');%加标题grid on%画⽹格线5.指数序列n)x=(naMATLAB程序:%指数序列n=0:10;%产⽣⼀个0到10的矩阵x=(0.6).^n;%⽣成⼀个底数为0.6的指数序列stem(n,x);%绘制x的序列图grid on%画⽹格线三.思考题1讨论复指数序列的性质(1)正交性,复指数序列⽤欧拉公式展开可得:e^jωn=cosωn+jsinωn其可表⽰⼀个余弦信号与⼀个正弦信号的叠加,这两个信号呈正交关系。
MATLAB离散信号的产生和频谱分析实验报告
MATLAB离散信号的产⽣和频谱分析实验报告实验⼀离散信号的产⽣和频谱分析⼀、实验⽬的仿真掌握采样定理。
学会⽤FFT 进⾏数字谱分析。
掌握FFT 进⾏数字谱分析的计算机编程实现⽅法。
培养学⽣综合分析、解决问题的能⼒,加深对课堂内容的理解。
⼆、实验要求掌握采样定理和数字谱分析⽅法;编制FFT 程序;完成正弦信号、线性调频信号等模拟⽔声信号的数字谱分析;三、实验内容单频脉冲(CWP )为)2e xp()()(0t f j T t rec t t s π=。
式中,)(Ttrect 是矩形包络,T 是脉冲持续时间,0f 是中⼼频率。
矩形包络线性调频脉冲信号(LFM )为)]21(2exp[)()(20Mt t f j Ttrect t s +=π。
式中,M 是线性调频指数。
瞬时频率Mt f +0是时间的线性函数,频率调制宽度为MT B =。
设参数为kHz f 200=,ms T 50=,kHz B 10=,采样频率kHz f s 100=。
1.编程产⽣单频脉冲、矩形包络线性调频脉冲。
2.编程实现这些信号的谱分析。
3.编程实现快速傅⽴叶变换的逆变换。
四、实验原理1、采样定理所谓抽样,就是对连续信号隔⼀段时间T 抽取⼀个瞬时幅度值。
在进⾏模拟/数字信号的转换过程中,当采样频率fs ⼤于信号中最⾼频率f 的2倍时(fs>=2f),采样之后的数字信号完整地保留了原始信号中的信息,⼀般实际应⽤中保证采样频率为信号最⾼频率的5~10倍;采样定理⼜称奈奎斯特定理。
2、离散傅⾥叶变换(FFT )长度为N 的序列()x n 的离散傅⽴叶变换()X k 为:10()(),0,....,1N nkN n X k x n W k N -===-∑N 点的DFT 可以分解为两个N/2点的DFT ,每个N/2点的DFT ⼜可以分解为两个N/4点的DFT 。
依此类推,当N 为2的整数次幂时(2MN =),由于每分解⼀次降低⼀阶幂次,所以通过M 次的分解,最后全部成为⼀系列2点DFT 运算。
常见离散信号的MATLAB产生和图形显示
实验一 常见离散信号的MATLAB 产生和图形显示一、 实验目的加深对常见离散信号的理解二、实验内容及步骤编制程序产生以下信号,并绘出其图形。
1)产生64点的单位抽样序列)(n δN=64x=[1,zeros(1,N-1)]stem(x)2)产生64点并移位20位的单位抽样序列)20(-n δN=64x=[0,zeros(1,N-1)]x(20)=1stem(x)3)任意序列)5(7.0)4(9.2)3(6.5)2(8.1)1(4.3)(0.8)(-+-+-+-+-+=n n n n n n n f δδδδδδ4)产生幅度A=3,频率f=100,初始相位ϕ=1.2,点数为32 点的正弦序列。
n=0:31;x=3*exp(j*314*n)figure(1)stem(n,x)5)产生幅度A=3,角频率ω=314,点数为32 点的复正弦序列。
n=0:31A=3;w=314;x=A*exp(w*j*n)stem(x)6)产生幅度A=3,a=0.7,点数为32 点的实指数序列。
n=0:31;A=3;a=0.7;x=A*a.^nstem(x)实验二 离散系统的时域分析一、 实验目的(1)熟悉并掌握离散系统的差分方程表示方法(2)加深对冲激响应和卷积方法的理解二、 实验内容与要求编制程序求解下列两个系统的单位冲激响应和阶跃响应,并绘出其图形。
要求分别用 filter 、conv 、impz 三种函数完成。
y [n ]+ 0.75y [n −1]+ 0.125y [n − 2] = x [n ]− x [n −1]y [n ] = 0.25{x [n −1]+ x [n − 2]+ x [n −3]+ x [n − 4]}给出理论计算结果和程序计算结果并讨论。
三、实验原理系统响应为如下的卷积计算公式:][][][*][][m n h m x n h n x n y m -==∑∞-∞=h[n]是有限长度的(n:0,M),称系统为FIR系统;反之,称系统为IIR系统。
基本离散信号的MATLAB产生和图形显示
实验报告实验题目:基本离散信号的MATLAB产生和图形显示姓名:杨全任伟院别:电气工程学院专业:电子信息工程班级:电子一班指导教师:许春和时间: 2014 年10 月 31 日电气工程学院一、实验目的:(1)熟悉MATLAB应用环境,常用窗口的功能和使用方法。
(2)加深对常用离散时间信号的理解。
(3)掌握简单的绘图命令。
二、实验仪器:PC机一台MATLAB软件三、实验用MATLAB函数介绍:(1)数字信号处理中常用到的绘图指令(具体调用格式参看help) close all; %关闭所有图形窗口clear; %清除工作空间中的所有变量clc; %清除命令窗口显示figure( ); %新建一个图形窗口并给定序号stem( ); %函数序列柄状图形绘制plot( ); % 线性坐标图形绘制subplot( ); %将图形窗口分成若干个区域grid on(off); %给图形加网格线hold on(off); %当前图形保护模式linde([xmin,xmax],[0,0])%绘制X轴线axis([xmin,xmax,ymin,ymax]) %设置X\Y坐标轴刻度title (‘‘); % 给图形加标题ylabel (‘‘); %给图形加y坐标说明(2)离散时间信号产生可能涉及的函数zeros(); ones(); exp(); sin();length(); real();imag();四、实验内容:(1)产生冲击%单位冲击序列的产生n=0:6;%定义序列长度xn=[zeros(1,1),1,zeros(1,5)];%产生序列stem(n,xn,'k.');%绘制图形grid on; %图形添加网格axis([-2,2,0,1]);%定义X,Y轴xlabel ('时间n'); %X轴注释ylabel('幅度');%Y轴注释title('单位冲击序列\delta(n-1)');%添加标题(2)绘出单位阶跃序列、矩形序列序列的图形长度任意设定并给出程序。
离散信号及其MATLAB实现
实验一 离散信号及其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)序列的加、减、乘、除和乘方运算输入序列,和输出序列图形分别如下图所示nAnBnCnD00.511.522.53nE序列的运算00.511.522.53nFnG(2)序列的表示051015nx 1序列的表示051015nx 2051015nx 3(3)序列的移位0123456789nx阶跃序列nx 1阶跃序列的移位(4)序列相加-2-101234nx 1序列相加四、实验小结通过本次实验学会了编写M文件实现离散信号的运算图像绘制等;更加熟练地掌握了序列的几个基本运算:加法、乘法、移位、翻转和尺度变换;知道了模拟信号经过等间隔采样可以得到时域离散信号,如()nx32.0+=、nx8.0n=、()()n je()()()ππππ1.0++=n3+x等模拟信号经过16点等间隔采nnsincos252.02.0125.0样可得到上述所示16点离散序列;熟悉了stepshift的编写来实现序列的移位;熟悉了MATLAB的主要操作命令,同时掌握了离散信号的表示方法及基本运算和绘制命令。
1.常见离散信号的产生 - 数字信号处理实验报告
计算机与信息工程学院验证性实验报告1. 加深对离散信号的理解。
2. 掌握典型离散信号的Matlab 产生和显示。
二、实验原理及方法在MATLAB 中,序列是用矩阵向量表示,但它没有包含采样信息,即序列位置信息,为此,要表示一个序列需要建立两个向量;一是时间序列n,或称位置序列,另一个为取值序列x ,表示如下:n=[…,-3,-2,-1,0,1,2,3,…]x=[…,6,3,5,2,1,7,9,…]一般程序都从0 位置起始,则x= [x(0), x(1), x(2),…]对于多维信号需要建立矩阵来表示,矩阵的每个列向量代表一维信号。
数字信号处理中常用的信号有指数信号、正弦信号、余弦信号、方波信号、锯齿波信号等,在MATLAB 语言中分别由exp, sin, cos, square, sawtooth 等函数来实现。
三、实验内容1. 用MATLAB 编制程序,分别产生长度为N (由输入确定)的序列: ①单位冲击响应序列:δ(n )可用MATLAB 中zeros 函数来实现; ②单位阶跃序列:U (n )可用MATLAB 中ones 函数来实现;③正弦序列:()()sin x n n ω=;④指数序列:(),n x n a =-∞<∞<+∞⑤复指数序列:用exp 函数实现()0a jb n K e +,并给出该复指数序列的实部、虚部、幅值和相位的图形。
(其中a=-0.2;b=0.5;K0=4;N=40.)参考流程图:四、实验报告要求1. 写出实验程序,绘出单位阶跃序列、单位阶跃序列、正弦序列、指数序列的图形以及绘出复指数序列的实部、虚部、幅值和相位的图形。
2. 序列信号的实现方法。
3. 在计算机上实现正弦序列0()sin(2)x n A fn πϕ=+。
五、实验程序及结果%编写一个长度为N 的单位冲激响应序列function [x,n]=impseq1(N)n1=-5; %设置的起始时间点n2=N+n1-1; %设置的终止时间点n=n1:n2;x=[zeros(1,-n1),1,zeros(1,n2)];stem(n,x,'r*')title('长度为N 的单位冲激响应序列')xlabel('n')在MATLAB Command Window 中输入[x,n]=impseq1(40),结果如下:%编写一个长度为N 的单位阶跃序列function [x,n]=stepseq1(N)n1=-10; %设置的起始时间点n2=N+n1-1; %设置的终止时间点n=n1:n2;x=[zeros(1,-n1),ones(1,n2+1)];plot(n,x,'*')hold onplot(n,x,'r')title('长度为N 的单位阶跃序列')xlabel('n')在MATLAB Command Window中输入[x,n]=stepseq1(40),结果如下:%编写一个长度为N角频率为w的正弦序列function [y,n]=wqq_sin(N,w)n1=-5; %设置的起始时间点n2=N+n1-1; %设置的终止时间点n=n1:.01:n2;y=sin(w*n);plot(n,y,'r')hold ontitle('长度为N角频率为w的正弦序列')xlabel('n')在MATLAB Command Window中输入[x,n]=wqq_sin(40,0.2*pi),结果如下:%编写一个长度为N幂底数为a的指数序列function [y,n]=wqq_zhishu(N,a)n1=-5; %设置的起始时间点n2=N+n1-1; %设置的终止时间点n=n1:.01:n2;y=a.^n;plot(n,y,'r')title('长度为N幂底数为a的指数序列')xlabel('n')在MATLAB Command Window中输入[y,n]=wqq_zhishu(10,0.5),结果如下:%编写一个长度为N的复指数序列function [y,n]=wqq_fuzhishu(a,b,K0,N)n1=-20; %设置的起始时间点n2=N+n1-1; %设置的终止时间点n=n1:n2;y=K0.*exp((a+b*j).*n);y1=real(y); %复指数的实部y2=imag(y); %复指数的虚部y3=abs(y); %复指数的幅值y4=angle(y); %复指数的相位subplot 221stem(n,y1,'*')title('复指数序列')ylabel('实部'); gridsubplot 222stem(n,y2,'*')title('复指数序列')ylabel('虚部');gridsubplot 223stem(n,y3,'*')ylabel('幅值');xlabel('n');gridsubplot 224stem(n,y4,'*')ylabel('相位');xlabel('n');grid在MATLAB Command Window中输入[y,n]=wqq_fuzhishu(-0.2,0.5,4,40),结果如下:六、实验小节经本次实验我了解了单位阶跃序列、单位阶跃序列、正弦序列、指数序列及复指数序列的实现方法,并通过绘出它们的图形掌握了各个函数的特点,此次实验编写的均是子程序,方便以后随时调用。
实验一离散信号的MATLAB实现
实验一离散信号的MATLAB实现实验一:离散信号的MATLAB实现一、实验目的本实验旨在通过MATLAB实现离散信号的生成、绘制和基本操作,加深对离散信号处理的理解,并为后续实验做好准备。
二、实验原理离散信号是指在时间域或幅值域上取值有限的信号。
常见的离散信号包括矩形波、三角波、正弦波等。
在MATLAB中,可以使用不同的函数和参数来生成这些离散信号。
同时,使用MATLAB的绘图功能可以将离散信号绘制出来,以便观察和分析。
三、实验步骤1.生成离散信号首先,我们需要生成一个离散信号。
在MATLAB中,可以使用以下代码生成一个长度为N的离散信号:N = 100; % 信号长度t = 0:N-1; % 时间向量x = sin(2*pi*t/N); % 离散正弦波信号这段代码将生成一个长度为100、采样频率为N Hz的正弦波信号。
其中,t是时间向量,表示信号在每个采样点上的时间;x是信号的幅值向量,表示在每个采样点上的幅值。
2.绘制离散信号生成离散信号后,我们可以使用MATLAB的绘图功能将其绘制出来。
在MATLAB 中,可以使用以下代码将离散信号绘制出来:plot(t, x); % 绘制离散正弦波信号xlabel('Time (s)'); % 设置X轴标签ylabel('Amplitude'); % 设置Y轴标签title('Discrete Sine Wave'); % 设置标题这段代码将绘制出离散正弦波信号的图形,并添加了X轴和Y轴标签以及标题。
3.基本操作除了生成和绘制离散信号外,我们还可以对离散信号进行一些基本操作,如加减、乘除、翻转等。
例如,我们可以使用以下代码将两个离散信号相加:y = x + 2; % 将离散正弦波信号加上2这段代码将生成一个新的离散信号y,它是原来信号x的基础上加上2。
同样地,我们还可以对离散信号进行其他基本操作。
四、实验结果与分析通过本实验,我们成功地生成了离散正弦波信号,并将其绘制出来。
【免费下载】常见离散信号的Matlab产生和图形显示
实验一 实验名称:常见离散信号的Matlab 产生和图形显示一、实验目的1、加深对常用离散信号的理解;2、掌握matlab 中一些基本函数的建立方法。
二、实验步骤(附源代码及仿真结果图)1、使用状况1)创建M 文件File-→New-→M-file 2)运行Debug->run 2、实验原理1)单位抽样序列 ⎩⎨⎧=01)(n δ00≠=n n 在MATLAB 中可以利用zeros()函数实现。
%创建一个1行N 列的0矩阵,将第一个值重新赋值为1;1)1();,1(==x N zeros x 如果在时间轴上延迟了k 个单位,得到即:)(n δ)(k n -δ ⎩⎨⎧=-01)(k n δ0≠=n k n 2)单位阶越序列⎩⎨⎧01)(n u 00<≥n n 在MATLAB 中可以利用ones()函数实现。
%一个长度为N 的零矩阵);,1(N ones x =3)正弦序列)/2sin()(ϕπ+=Fs fn A n x在MATLAB 中)/***2sin(*1:0fai Fs n f pi A x N n +=-=4)复指数序列nj e r n x ϖ⋅=)(在MATLAB 中)**exp(1:0n w j r x N n ⋅=-=5)指数序列n a n x =)(在MATLAB 中n a x N n .^1:0=-=3、实验内容(1)、单位抽样序列(2)、单位阶越序列)正弦函数(3(4)2、绘出信号,当、时、、zn e n x =)(6)12/1(πj z +-=6)12/1(πj z +=121=z 、时的信号实部和虚部图;62πj z +=6πj z =程序如下: 由上图的实部部分可以看出,Z=pi/6时,序列周期为12。
计算序列周期为2*6=12。
实验和理论相符。
3、绘出信号的频率是多少?周期是多少?产生一个数)1.0*2sin(5.1)(n n x π=字频率为0.9的正弦序列,并显示该信号,说明其周期?程序如下:由上图看出:x1=1.5*sin(2*pi*0.1*n)的周期是10,而x2=sin(0.9*n)是非周期的。
实验一 常见离散信号的MATLAB产生和图形显示
实验一 常见离散信号的MATLAB 产生和图形显示授课课时:2学时一、实验目的:(1)熟悉MATLAB 应用环境,常用窗口的功能和使用方法。
(2)掌握MATLAB 在时域内产生常用离散时间信号的方法。
(3)掌握离散信号的基本运算。
(4)掌握简单的绘图命令。
二、实验原理:(一)信号的表示和产生① 单位抽样序列⎩⎨⎧=01)(n δ 00≠=n n如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ≠=n k n 参考程序:例1-1:)2010(()(<<-=n n n x )δclear all n1=-10;n2=20;n0=0;%在起点为n1,终点为n2的范围内,于n0处产生冲激。
n=n1:n2;%生成离散信号的时间序列x=[n==n0];%生成离散信号x(n)stem(n,x);%绘制脉冲杆图xlabel(' n');ylabel('x(n)');%横坐标和纵坐标的标注说明。
title('Unit Sample Sequence');%图形上方标注图名axis([-10 20 0 1.2]);%确定横坐标和纵坐标的取值范围② 单位阶跃序列⎩⎨⎧=01)(n u 00<≥n n 例1-2:)202((u )(<<-=n n n x )clear alln1=-2;n2=20;n0=0;n=n1:n2;%生成离散信号的时间序列x=[n>=n0];%生成离散信号x(n)stem(n,x,'filled');xlabel('n');ylabel('x(n)');title('Unit step Sequence');axis([-2 20 0 1.2]);③ 正弦序列)sin()(ϕ+=wn A n x例1-3:一正弦信号的频率为1HZ ,振幅值幅度A 为1V ,在窗口显示2个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号并显示该连续信号和离散信号的波形。
实验一 离散信号的MATLAB实现
实验一离散信号的MATLAB实现一、目的要求1)学习典型的离散时间信号的MATLAB实现方法;2)学习离散时间序列的基本运算:相加、相乘、移位等;3)学习噪声的产生;4)掌握两个序列的卷积和相关运算5)掌握离散系统单位脉冲响应的求解。
二、实验内容1)典型的离散信号的表示方法:用matlab产生单位抽样信号δ(n) 、单位阶跃序列u(n) 、矩形序列R N(n) 、实指数序列a n u(n)、正弦序列sin(ωn)。
编写程序、并画出图形。
n=-20:20;n0=0;n1=10;w0=pi/4;x=[(n-n0)==0];x1=[(n-n0)>=0];x2=[(n-n0)>=0& (n-n1)<=0];x3=0.9.^n.*x1;x4=sin(w0*n);subplot(511);stem(n,x);axis([ -20 20 0 2]);ylabel('\sigma(n)'); subplot(512);stem(n,x1);axis([ -20 20 0 2]);ylabel('u(n)');subplot(513);stem(n,x2);axis([ -20 20 0 2]);ylabel('B N(n)');subplot(514);stem(n,x3);axis([ -20 20 0 2]);ylabel('a n u(n)');subplot(515);stem(n,x4);axis([ -20 20 -2 2]);ylabel('sin(w0n)');xlabel('n');2)离散信号的基本运算:对序列x(n)={2,3,4,1,2,5} ,n=0,1,2,3,4,5,的移位、乘法、加法、翻转及尺度变换。
编写程序、并画出图形。
n=-10:10;k=2;N=length(n);x=zeros(size(n));x1=zeros(size(n));y=zeros(size(n));y1=zeros(size(n));y2=zeros(size(n));y3=zeros(size(n));y4=zeros(size(n));x(11:16)=[2 3 4 1 2 5];x1(11:16)=[1 2 3 4 5 6];y(1+k:N)=x(1:N-k);y1(1:N-k)=x(1+k:N);y2=x.*x1;y3=x+x1;y4=fliplr(x);y5=x(1:2:N);n1=fix(n(1:2:N)/2);subplot(421);stem(n,x);xlabel('n');ylabel('x(n)');subplot(422);stem(n,x1);xlabel('n');ylabel('x1(n)');subplot(423);stem(n,y);xlabel('n');ylabel('x(n-2)');subplot(424);stem(n,y1);xlabel('n');ylabel('x(n+2)');subplot(425);stem(n,y2);xlabel('n');ylabel('x(n)*x1(n)');subplot(426);stem(n,y3);xlabel('n');ylabel('x(n)+x1(n)');subplot(427);stem(n,y4);xlabel('n');ylabel('x(-n)');subplot(428);stem(n1,y5);xlabel('n');ylabel('x(2n)');3)噪声的产生:产生方差为1,2,0.5的白噪声。
实验一常见离散信号的MATLAB产生及图形显示
Guangxi University of Science and Technology实验报告实验课程:数字信号处理实验内容:常见离散信号的MATLAB产生和图形显示院(系):计算机科学与通信工程学院专业:通信工程班级:学生姓名:学号:指导教师:2016年 5 月 25 日实验一、常见离散信号的MATLAB 产生和图形显示一、实验目的:加深对常用离散信号的理解;二、实验原理:1.单位抽样序列实现: ⎩⎨⎧=01)(n δ 00≠=n n在MATLAB 中可以利用zeros()函数实现。
;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即: ⎩⎨⎧=-01)(k n δ0≠=n k n2.单位阶跃序列实现: ⎩⎨⎧01)(n u 00<≥n n ;在MATLAB 中可以利用ones()函数实现。
);,1(N ones x =3.正弦序列实现: )/2sin()(ϕπ+=Fs fn A n x在MATLAB 中 )/***2sin(*1:0fai Fs n f pi A x N n +=-=4.复指数序列实现: n j e n x ϖ=)(在MATLAB 中 )**exp(1:0n w j x N n =-=5.实指数序列实现: n a n x =)(在MATLAB 中 n a x N n .^1:0=-=三、实验内容及步骤:1.单位抽样序列实现程序如下:n=n1:n2;x1=[zeros(1,5) 1 zeros(1,5)];%%n 为冲击位置x2=[zeros(1,7) 1 zeros(1,3)];%向右平移2个单位subplot(1,2,1);stem(n,x1,'filled');axis([n1,n2,0,1.1]);title('单位脉冲序列');xlabel('时间');ylabel('幅度x(n)');subplot(1,2,2);stem(n,x2,'filled');axis([n1,n2,0,1.1]);title('单位脉冲序列向右平移2个单位');xlabel('时间');ylabel('幅度x(n)');结果如下:图: 1-12. 单位阶跃序列程序如下:N=5;x=ones(1,N);xn=0:N-1;subplot(1,2,1);stem(xn,x,'filled')axis([-1 5 0 1.1])title('单位阶跃序列');xlabel('时间(n)');ylabel('幅度x(n)');x1=[0 0 ones(1,3)];subplot(1,2,2);stem(xn,x1,'filled')axis([-1 5 0 1.1])title('单位阶跃序列平移两个单位');xlabel('时间(n)');ylabel('幅度x(n)');结果如下:图: 1-2 3.正弦序列实现程序如下:n1=0;n2=15;n=n1:n2;x=3*sin(n*pi/4+pi/2);stem(n,x,'filled');axis([n1 n2 1.1*min(x) 1.1*max(x)]);axis([n1 n2 1.1*min(x) 1.1*max(x)]);title('正弦函数图');ylabel('时间x(n)');xlabel('幅度n');结果如下:图: 1-3 4.复指数序列实现程序如下:n1=30;a=-0.1;w=0.6;n=0:n1;x=exp((a+j*w)*n);subplot(1,2,1),stem(n,real(x),'filled');title('复指数原信号的实部');subplot(1,2,2),stem(n,imag(x),'filled');title('复指数原信号的虚部');结果如下:图: 1-4 5.实指数序列实现程序如下:n1=-10;n2=10;a1=0.5;a2=2;na1=n1:0;x1=a1.^na1;na2=0:n2;x2=a2.^na2;subplot(1,2,1),stem(na1,x1,'filled');title('实指数序列(a<1)');subplot(1,2,2),stem(na2,x2,'filled');title('实指数序列(a>1)');结果如下:图: 1-5四、实验总结与分析通过本实验,深入了解了MATLAB的运行环境,掌握了如何在该软件上编程、编译和运行一个MATLAB程序,通过运行简单的MATLAB程序,初步了解了MATLAB程序的特点,掌握了一些基本的MATLAB函数。
实验一 离散信号及其MATLAB实现
实验一离散信号及其MATLAB实现一. 实验目的(1)熟悉MATLAB的主要操作命令;(2)学会离散信号的表示方法及基本操作运算;(3)掌握简单的绘图命令;(4)用MATLAB编程并学会创建函数;二. 实验原理1.离散信号表示与运算在数字信号处理中,所有信号都是离散时间信号——序列,表示为x(n)={...,x(-1),x(0),x(1),...} -∞<n<∞MATLAB一般把普通的一维抽样数据信号即抽样序列表示成向量的形式。
本实验用到的典型信号表示如下:(1)实指数序列 x(n)=a n a∈RMATLAB实现n=0:N-1;x=a.^n;+β)n1≤ n≤ n2(2) 正(余)弦序列x(n)=Asin(2fπnTSMATLAB实现n=n1:n2;x=A*sin(2*pi*f*n*Ts + β);(3) 复指数序列 x(n)=e(α + jw)n 任意nMATLAB实现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)设置网格线命令:gridgrid ON : 对当前坐标线加上网格线grid OFF :撤销网格线grid :设置或撤销网格线(5)添加坐标轴标志函数:xLabel(), yLabel()三.实验内容(1)序列的加、减、乘、除和乘方运算。
常见离散信号产生和实现实验
实验1 常见离散信号产生和实现一、实验目的1、加深对常用离散信号的理解;2、熟悉使用MATLAB 在时域中产生一些基本的离散时间信号。
二、实验原理MATLAB 语言提供了一系列函数用来产生信号,如exp, sin, cos, square, sawtooth ,ones, zeros 等函数。
1. 基本信号序列 1) 单位抽样序列⎩⎨⎧=01)(n δ 00≠=n n 程序:n=-10:20; %生成一个从-10到20的序列u=[zeros(1,10) 1 zeros(1,20)]; %生成一个前10位为0,第十一位为1,后20位为0的矩阵stem(n,u); %画出n 为横轴,u 为纵轴的序列xlabel('Time indexn');ylabel('Amplitude'); %添上x y 轴的标签title('Unit Sample Sequence'); %图表的标签axis([-10 20 0 1.2]); %规定横轴,纵轴的显示范围图形:如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ 0≠=n k n程序:n=-10:20;u=[zeros(1,15) 1 zeros(1,15)];stem(n,u);xlabel('Time indexn');ylabel('Amplitude');title('Unit Sample Sequence');axis([-10 20 0 1.2]);图形:2) 单位阶跃序列⎩⎨⎧01)(n u 00<≥n n 程序:n=-10:20;x=[zeros(1,10),ones(1,21)];stem(n,x);图形:3) 实指数序列 R a n a n x n∈∀=,)(程序:a1=1.1;a2=0.9;a3=-1.1;a4=-0.9;n=[-5:15];x1=(a1.^n);x2=(a2.^n);x3=(a3.^n);x4=(a4.^n); subplot(2,2,1);stem(n,x1,'.k');title('a>1');axis([-5,15,-0.5,5]);subplot(2,2,2);stem(n,x2,'.k');title('0<a<1');axis([-5,15,-0.2,1.2]);subplot(2,2,3);stem(n,x3,'.k');title('a<-1');axis([-5,15,-6,4]);subplot(2,2,4);stem(n,x4,'.k');title('<-1a<0');axis([-5,15,-1,1.2]);图形:4) 复指数序列n e n x nj ∀=+)()(ωσ程序:n=0:10;lu=0.2;w0=pi;x=exp((lu+j*w0)*n);stem(n,x);xlabel('Time indexn');ylabel('Amplitude');title('Unit Sample Sequence'); axis tight图形:5)随机序列程序:x=rand(1,20);stem(x);xlabel('Time indexn');ylabel('Amplitude');title('Unit Sample Sequence');axis tight图形:基本周期波形1)方波程序:t=0:0.1*pi:6*pi; %定义t为从0开始,间距为0.1pi,截止为6pi的序列y=square(t); %由函数生成方波axis([0 7*pi -1.5 1.5]); %规定尺度距离plot(t,y); %画出横轴为t 纵轴为y 的方波函数xlabel(‘时间 t’); % 为x 轴添加标签ylabe l(‘幅度y’); % 为y 轴添加标签axis([0 20 0 2])图形:2) 正弦波)/2sin()(ϕπ+=Fs fn A n x程序:t=0:0.1:15;A=2;x=A*sin(0.7*pi*t+0.5);plot(t,x);xlabel('Time index t');ylabel('Amplitude x');axis([0 2*pi -3 3])title('正弦波')图形:3)锯齿波程序:Fs=10000;t=0:1/Fs:2;x=sawtooth(2*pi*40*t);plot(t,x);xlabel('Time index t');ylabel('Amplitude x');axis([0 0.2 -2 2])title('锯齿波')图形:2.基本非周期波形程序:t=0:1/1000:2;x=chirp(t,0.1,80);plot(t,x);xlabel('Time index t');ylabel('Amplitude x'); specgram(x,256,100,256,250); title('基本非周期波形')图形:3.sinc信号程序:t=linspace(-5,5);x=sinc(t);plot(t,x);xlabel('Time index t');ylabel('Amplitude x');title('sinc信号')图形:4.序列的操作1)信号加x(n)=x1(n)+x2(n)MATLAB实现:x=x1+x2;注意:x1和x2序列应该具有相同的长度,位置对应,才能相加。
实验一离散时间信号在MATLAB中的表示
实验一离散时间信号的表示及运算一、实验目的1、学会运用MATLAB 表示的常用离散时间信号;2、学会运用MATLAB 实现离散时间信号的基本运算。
二、实验原理及实例分析2.1 离散时间信号在MATLAB中的表示离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。
离散序列通常用x(n)来表示,自变量n 必须是整数。
离散时间信号的波形绘制在MA TLAB 中一般用stem( )函数(注释:stem中文意思是茎、干、柄)。
stem( )函数的基本用法和plot( )函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。
如果要实心,需使用参数“ fill ”、“ filled ”,或者参数“ .”。
由于MATLAB 中矩阵元素的个数有限,所以MATLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。
类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。
0、判断n 是否为整数function y = isInt(n)y = (n==fix(n)); % fix(n) 为取整运算end1、单位取样序列单位取样序列(n) ,也称为单位冲激序列,定义为1 (n 0)1)0 (n 0)要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n=0 处是取确定的值1。
在MA TLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即function y=impDT(n)y=(n==0); %当参数n 为0 时冲激为1,否则为0end调用该函数时n 必须为整数或整数向量。
【实例1】利用MA TLAB 的impDT 函数绘出单位冲激序列的波形图。
解:MATLAB 源程序为>>n=-3:3; % n=[-3,-2,-1,0,1,2,3]>>x=impDT(n);>>stem(n,x,'fill'), xlabel('n'), grid on>>title(' 单位冲激序列')>>axis([-3 3 -0.1 1.1])程序运行结果如图 1 所示。
实验一 MATLAB 基础:时域离散信号的产生
实验一程序代码及实验结果图:(1)阅读并上机验证实验原理部分的例题程序,理解每一条语句的含义。
改变例题中的有关参数(如信号的频率、周期、幅度、显示时间的取值范围、采样点数等),观察对信号波形的影响。
实验程序代码及结果如下:例1-1 用MATLAB 的关系运算式来产生单位抽样序列。
n1= -5; n2=5; n0=0; %确定起始点和基准点位置n=n1:n2; %取值区间x=[n==n0]; %仅当n=n0时,x值为1stem(n,x,'filled');axis([n1,n2,0,1.1*max(x)]); %确定坐标轴范围xlabel('时间(n)'); ylabel('幅度x(n)'); %横纵坐标名称title('单位脉冲序列'); %标题例1-2 用zeros 函数和抽样点直接赋值来产生单位抽样序列。
n1=-5; n2=5; k=0; %确定起始点和基准点位置n=n1:n2; %取值区间nt=length(n); %确定参数的长度nk=abs(k-n1)+1; %取绝对值x=zeros(1,nt); %生成零矩阵x(nk)=1; %抽样点直接赋值为1stem(n,x,'filled');axis([n1,n2,0,1.1*max(x)]); %确定坐标轴范围xlabel('时间(n)'); ylabel('幅度x(n)'); %横纵坐标名称title('单位脉冲序列'); %标题例1-3 生成移位的单位脉冲序列。
n1=-5; n2=5; n0=2; %确定起始点和基准点位置n=n1:n2; %取值区间x=[(n-n0)==0]; %仅当n-n0=0,n=2时取1 stem(n,x,'filled');axis([n1,n2,0,1.1*max(x)]); %确定坐标轴范围xlabel('时间(n)'); ylabel('幅度x(n)'); %横纵坐标名称title('单位脉冲序列'); %标题例1-4 用MATLAB 的关系运算式来产生单位阶跃序列。
367-实验一Matlab中常用离散信号产生及绘图命令的练习
实验一 Matlab 中常用离散信号产生及绘图命令的练习一、实验目的:1. 了解Matlab 的基本操作,为以后的实验奠定基础;2. 熟悉Matlab 操作环境,并进行一些简单的计算和m 文件的编写; 3. 加深对常用离散信号的理解; 二、实验原理: 1.离散信号产生1)单位抽样序列⎩⎨⎧=01)(n δ 00≠=n n在MA TLAB 中可以利用 [x,n] = impseq(n0,n1,n2) 函数实现 如果)(n δ在时间轴上延迟了m 个单位,得到)(m n -δ即:⎩⎨⎧≠==-mn mn m n ,0,1)(δ2)单位阶跃序列⎩⎨⎧>=nn n u 其他,00,1)(在MATLAB 中可以利用 ones () 函数实现3)余弦序列)/2cos()(φπ+=S F fn A n x在MA TLAB 中)/***2cos(*1:0φ+=-=s F n f pi A x N ns F :采样频率 4)复正弦序列n j e n x ω=)(在MA TLAB 中)**exp(1:0n j x N n ω=-=5)指数序列)()(n u a n x n =在MA TLAB 中na x N n .^1:0=-=2. 绘图语句 1)figurefigure 有两种用法,只用一句figure 命令,会创建一个新的图形窗口,并返回一个整数型的窗口编号。
figure(n)表示将第n 号图形窗口作为当前的图形窗口, 并将其显示在所有窗口的最前面; 如果该图形窗口不存在, 则新建一个窗口,并赋以编号n 。
2)plot线型绘图函数。
用法为plot(x,y,′s ′)。
参数x 为横轴变量,y 为纵轴变量,s 用以控制图形的基本特征如颜色、粗细等,通常可以省略。
3)Stem绘制离散序列图,常用格式stem(y)和stem(x,y)分别和相应的plot 函数的绘图规则相同,只是用stem 命令绘制的是离散序列图。
实验1常见离散信号的MATLAB产生和图形显示
实验1 常见离散信号的MATLAB 产生和图形显示实验目的:加深对常用离散信号的理解;实验原理:1. 单位抽样序列⎩⎨⎧=01)(n δ≠=n n 在MATLAB 中可以利用zeros()函数实现。
;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ≠=n k n2.单位阶跃序列⎩⎨⎧01)(n u00<≥n n 在MATLAB 中可以利用ones()函数实现。
);,1(N ones x =3.正弦序列)/2sin()(ϕπ+=Fs fn A n x在MATLAB 中)/***2sin(*1:0fai Fs n f pi A x N n +=-=4.复正弦序列n j e n x ϖ=)(在MATLAB 中)**exp(1:0n w j x N n =-=5.指数序列n a n x =)(在MATLAB 中na x N n .^1:0=-=实验内容:编制程序产生上述5种信号(长度可自行输入确定),并绘出其图形。
实验要求:讨论复指数序列的性质。
实验2 离散系统的差分方程、单位脉冲响应和卷积分析实验目的:加深对离散系统的差分方程、单位脉冲响应和卷积分析方法的理解。
实验原理:离散系统其输入、输出关系可用以下差分方程描述:[][]NMkk k k dy n k p x n k ==-=-∑∑输入信号分解为单位脉冲序列,[][][]m x n x m n m δ∞=-∞=-∑。
记系统单位脉冲响应[][]n h n δ→,则系统响应为如下的卷积计算式:[][][][][]m y n x n h n x m h n m ∞=-∞=*=-∑当0,1,2,...k d k N ==时,h[n]是有限长度的(n :[0,M]),称系统为FIR 系统;反之,称系统为IIR 系统。
在MATLAB 中,可以用函数y=Filter(p,d,x) 求解差分方程,也可以用函数 y=Conv(x,h)计算卷积。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 常见离散信号的MATLAB 产生和图形显示授课课时:2学时 一、实验目的:(1)熟悉MATLAB 应用环境,常用窗口的功能和使用方法。
(2)掌握MATLAB 在时域内产生常用离散时间信号的方法。
(3)掌握离散信号的基本运算。
(4)掌握简单的绘图命令。
二、实验原理:(一)信号的表示和产生① 单位抽样序列⎩⎨⎧=01)(n δ00≠=n n 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ≠=n k n参考程序:例1-1:)2010(()(<<-=n n n x )δclear alln1=-10;n2=20;n0=0;%在起点为n1,终点为n2的范围内,于n0处产生冲激。
n=n1:n2;%生成离散信号的时间序列 x=[n==n0];%生成离散信号x(n) stem(n,x);%绘制脉冲杆图xlabel(' n');ylabel('x(n)');%横坐标和纵坐标的标注说明。
title('Unit Sample Sequence');%图形上方标注图名 axis([-10 20 0 1.2]);%确定横坐标和纵坐标的取值范围② 单位阶跃序列⎩⎨⎧=01)(n u00<≥n n 例1-2:)202((u )(<<-=n n n x )clear alln1=-2;n2=20;n0=0;n=n1:n2;%生成离散信号的时间序列 x=[n>=n0];%生成离散信号x(n) stem(n,x,'filled'); xlabel('n');ylabel('x(n)'); title('Unit step Sequence'); axis([-2 20 0 1.2]);③ 正弦序列)sin()(ϕ+=wn A n x例1-3:一正弦信号的频率为1HZ ,振幅值幅度A 为1V ,在窗口显示2个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号并显示该连续信号和离散信号的波形。
参考程序:clear f=1; A=1;nt=2;N=32;T=1/f;%输入信号频率,振幅和显示周期数 dt=T/N;%采样时间间隔n=0:nt*N-1;%建立离信号的时间序列tn=n*dt;%确定时间序列阳电在时间轴上的位置。
x=A*sin(2*pi*f*tn);subplot(2,1,1);plot(tn,x);%显示原连续信号axis([0 nt*T 1.1*min(x) 1.1*max(x)]);%限定横坐标和纵坐标的显示范围 ylabel('x(t)');subplot(2,1,2);stem(tn,x);%显示经采样的信号 axis([0 nt*T 1.1*min(x) 1.1*max(x)]); ylabel('x(n)');④ 复指数序列jwn e n x =)(例1-4;6.01.0-==ωσ、,求jwne n x =)(n1=30; a=-0.1; w=0.6; n=0:n1;x=exp((a+j*w)*n);stem(n,x);xlabel('n');ylabel('x(n)');title('复指数序列');⑤指数序列nax n)(u)(n=例1-5:n a(,其中a为实数)nx=clearn1=-10;n2=10;a1=0.5;a2=2;na1=n1:0;x1=a1.^na1;na2=0:n2;x2=a2.^na2;subplot(2,2,1),plot(na1,x1);title('实指数信号(a<1)');subplot(2,2,3),stem(na1,x1);title('实指数序列(a<1)');subplot(2,2,2),plot(na2,x2);title('实指数信号(a>1)');subplot(2,2,4),stem(na2,x2);title('实指数序列(a>1)');(二)序列的基本运算对离散时间序列实行基本运算可得到新的序列,这些基本运算主要包括加、减、乘、除、移位、反折等。
两个序列的加减乘除是对应离散样点值的加减乘除,因此,可通过MATLAB 的点乘和点除、序列移位和反折来实现,与连续时间信号处理方法基本一样。
a)序列的相加与相乘设两离散序列x1(n),x2(n),序列相加为x(n)=x1(n)+x2(n),相乘为x(n)=x1(n).x2(n),实际上是对应的序列值相加或相乘。
在MATLAB 中可以用运算符“+”实现,但相加的两个序列必须有相同的长度,且应该保证它们是相同的采样位置相加或相乘,因此在计算时,必须格外注意序列下标的计算。
例1-6:求)100()4()2()(<<-+-=n n n n x δδclear alln1=0;n2=10;n01=2;n02=4;%赋初值 n=n1:n2; x1=[(n-n01)==0]; x2=[(n-n02)==0]; x3=x1+x2;subplot(3,1,1);stem(n,x1); title('x1');subplot(3,1,2);stem(n,x2); title('x2');subplot(3,1,3);stem(n,x3);title('x3'); 例1-7:)85()4()(2)64()2()(1<<--=<<-+=n n u n x n n u n x 求x1(n)+x2(n )clear all n1=-4:6;n01=-2;x1=[(n1-n01)>=0];%建立x1信号n2=-5:8;n02=4;x2=[(n2-n02)>=0];%建立x2信号n=min([n1,n2]):max([n1,n2]);%为x信号建立时间序列nN=length(n);%求出时间序列n的点数Ny1=zeros(1,N);y2=zeros(1,N);%新建一维N列y1、y2全零数组y1(find((n>=min(n1))&(n<=max(n1))))=x1;%对y1赋值y2(find((n>=min(n2))&(n<=max(n2))))=x2;%对y2赋值x=y1+y2;stem(n,x);b)序列的移位将一个离散信号序列进行移位,形成新的序列:x1(n)=x(n-m) m>0时,原序列x(n)向右移m位,m<0,原序列x(n)向左移m位。
例1-8:序列x1 = [1 1 1 0 1],求x1(n),x1(n-1),x1(n+1)%shiftclear allx1 = [1 1 1 0 1];n1 = -3:1;%设定范围n = n1 + 1;%范围右移m = n1 -1;%左移x = x1;subplot(3,1,1);stem(n,x);%右移ylabel('x1(n-1)');subplot(3,1,2);stem(n1,x);%原序列ylabel('x1(n)');subplot(3,1,3);stem(m,x);%左移ylabel('x1(n+1)')c)序列的反褶x(-n)Matlab提供了fliplr函数,可以实现序列的反褶。
例1-9::将序列x1 ={1 2 1 0 3},-3<=n<=1,求x1(-n) %fanzheclearx1 = [1 2 1 0 3];n1 = [-3:1:1];subplot(1,2,1);stem(n1,x1);ylabel('x(n)');xlabel('n');n = -fliplr(n1);x = fliplr(x1);subplot(1,2,2);stem(n,x); ylabel('x(-n)'); xlabel('n');d)序列的尺度变换原序列x(n),y(n)=x(mn)就是对原序列每隔m 点取样形成的,相当于将时间轴压缩或扩展了m 倍。
例1-10:)2/(),2(),2sin()(n x n x n n x 求π=clear alln = (0:20)/20;%归一化 x =sin(2*pi*n);%x(n) x1 =sin(2*pi*n*2);%x(2n) x2 =sin(2*pi*n/2);%x(3n) subplot(3,1,1); stem(n,x); ylabel('x(n)'); subplot(3,1,2); stem(n,x1); ylabel('x(2n)'); subplot(3,1,3); stem(n,x2); ylabel('x(n/2)');三、实验内容及步骤:(1)复习常用离散时间信号的有关内容,阅读并输入实验原理中介绍的例题程序,理解其语句含义。
(2)编写程序,产生下列离散序列,并绘出其图形. a))55(),4(2)3()(<<--++=n n n n x δδ; b))55(),2()3()(<<-++-=n n u n u n xc))(1-2)(nn u n x )(=(3).已知两序列如下:x[n]={-4 5 1 -2 -3 0 2}, -4<n<4;y[n]={6 -3 -1 0 8 7 -2}; -2<n<6; 编程计算两序列的和、积,以及y (n-2),y(-n)。
四、实验用MATLAB 函数介绍1.涉及到的MATLAB 子函数其中在信号的产生和表示的实验过程中常用到的MATLAB 指令(函数名)有:stem(),zeros(),ones(),length(),linspace(),axis(),square(),rand(),title(),xlable(),ylable(),s ubplot()等,具体调用格式参看“help ”或者查阅相关书籍。
另外,在具体的实验过程中也可以根据实际需要自己定义函数例如:impseq.m,stepseq.m,sigadd.m 等。
举例:function [x,n]=impseq(n0,ns,nf) n=[ns:nf];x=[(n-n0)==0];在序列的基本运算的实验过程中常用到的MATLAB 指令(函数名)有:find ,fliplr 等,调用格式:find(n>=min(n1)&(n<=max(n1)):在符合关系运算条件的范围内寻找非零元素的索引号。