matlab实现:常见的离散时间信号
- 格式:docx
- 大小:43.49 KB
- 文档页数:2
实验一 常见离散信号的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点采样获得离散信号并显示该连续信号和离散信号的波形。
实验一:用MA TLAB 产生时域离散信号一、实验目的1、了解常用时域离散信号及其特点2、掌握用MATLAB 产生时域离散信号的方法二、实验内容及步骤1、编写程序,产生以下离散序列: (1)f (n )=δ(n ) (-3<n<4) n1=-3;n2=4;n0=0;n=n1:n2; x=[n==n0]; stem (n ,x,'filled’); axis([n1,n2,0,1。
1*max(x)]);xlabel(’时间(n)');ylabel(’幅度x (n )'); title ('单位脉冲序列’);时间(n)幅度x (n )单位脉冲序列(2)f (n )=u (n) (—5<n 〈5)n1=-5;n2=5;n0=0; n=n1:n2;x=[n>=n0]; stem(n ,x ,’filled’);axis ([n1,n2,0,1.1*max (x)]); xlabel('时间(n )');ylabel ('幅度x(n)’); title ('单位阶跃序列’); box时间(n)幅度x (n )单位阶跃序列(3)f (n )= e (0。
1+j1。
6∏)n (0<n 〈16)n1=16;a=0.1;w=1。
6*pi; n=0:n1;x=exp((a+j *w )*n );subplot (2,2,1);plot (n,real(x)); title(’复指数信号的实部');subplot (2,2,3);stem (n ,real(x ),'filled’); title (’复指数序列的实部'); subplot (2,2,2);plot(n,imag (x)); title('复指数信号的虚部');subplot (2,2,4);stem (n ,imag (x),'filled'); title (’复指数序列的虚部'); box5101520-4-20246复指数信号的实部05101520复指数序列的实部5101520-6-4-2024复指数信号的虚部05101520复指数序列的虚部(4)f (n)=3sin (nП/4) (0〈n 〈20)f=1/8;Um=3;nt=3; N=20;T=1/f ; dt=T/N; n=0:nt*N-1; tn=n *dt;x=Um*sin (2*f*pi*tn ); subplot (2,1,1);plot (tn,x);axis([0,nt *T ,1.1*min (x),1。
常见离散信号实现实验2 常见离散信号产⽣和实现⼀、实验⽬的:(1)了解离散信号的特点;(2)熟悉MATLAB 的基本使⽤⽅法;(3)典型信号的MATLAB 表⽰⽅法;(4)熟悉MATLAB Plot 函数等应⽤。
⼆、实验原理:1.单位抽样序列=01)(n δ0≠=n n在MATLAB 中可以利⽤zeros()函数实现。
;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:=-01)(k n δ≠=n k n2.单位阶越序列01)(n u 00<≥n n在MATLAB 中可以利⽤ones()函数实现。
);,1(N ones x =3.正弦序列π+=Fs fn A n x 在MATLAB 中)/***2sin(*1:0fai Fs n f pi A x N n +=-=4.复指数序列 n j e r n x ??=)(在MATLAB 中 )**exp(1:0n w j r x N n ?=-=5.指数序列 n a n x =在MATLAB 中na x N n .^1:0=-=三、MATLAB 基本使⽤⽅法1、MATLAB 运⾏平台如图所⽰:在“>>”提⽰符后输⼊命令并回车,执⾏结果会显⽰在屏幕上。
例如:输⼊y=3+5回车,显⽰结果如图所⽰。
另外在输⼊命令时,有时我们希望有些中间过程的结果不显⽰在屏幕上,⽽只显⽰最后的结果,这时我们需要在不显⽰执⾏结果的命令后加上“;”,该命令执⾏的结果不回显在屏幕上。
例如:计算z=x+y,其中x=2+1,y=3+5,我只想看到z的值,输⼊命令格式如图所⽰,我们可以看到x,y的结果没有在屏幕上显⽰,只显⽰z的值。
2、MATLAB中矩阵的输⼊⽅法:矩阵的输⼊⽅法有两种,第⼀种⽅式如图所⽰;第⼆种⽅式如图所⽰3、M⽂件的使⽤:在处理⼀些包含多条命令的问题时,如果在MATLAB的命令窗⼝中进⾏处理,当出现错误时不好修改,这时我们需要借助MATLAB提供的M⽂件⽅式来处理。
⽤MATLAB实现常⽤的离散时间信号及其时域运算⽤MATLAB 实现常⽤的离散时间信号及其时域运算摘要:1.运⽤MATLAB 的绘图指令绘制离散时间信号;2.⽤MATLAB 实现离散时间信号的时域运算。
关键词:MATLAB 离散时间信号时域运算实验⽬的:1.复习MATLAB 语⾔以及常⽤指令2.学习和掌握⽤MATLAB 语⾔产⽣离散时间信号的编程⽅法3.通过编程绘制出离散时间信号波形,加深理解信号的时域运算实验原理:1.1单位阶跃序列和单位样值序列离散时间信号只在某些离散瞬间时给出信号的值,因此,它是时间上不连续的序列。
单位阶跃序列和单位样值序列在离散信号与系统的分析中是两个⾮常典型的序列,分别记为u(n)和δ(n),他们的定义分别如下:≠≡=)0(0)0(1)(n n n δ≥<=)0(1)0(0)(n n n u若单位节约序列的起始点为n 0,单位样值序列出现在n 0时刻,则表达式为:2.离散时间信号的时域运算与连续时间信号的研究类似,在离散系统分析中,经常遇到离散时间的运算,包括两信号的相加、相乘以及序列本⾝的移位、反褶、尺度等等,也需要了解在运算过程中序列的以及相应的波形的变化。
序列)(n x 的反褶:序列)(n x 的移位:序列)(n x 的尺度:两序列)(1n x 和)(2n x 相加减:两序列)(1n x 和)(2n x 相乘: )()(21n x n x ?≥<=-)(1)(0)(000n n n n n n u ≠==-)(0)(1)(000n n n n n n δ)(n x -)(0n n x -)(an x )()(21n x n x ±试验任务:1.绘制⽤于产⽣以下信号的通⽤程序1 )()(0n n A n x -=δ2 )]()([)(21m n u m n u A n x ---=1.1 程序和图形见附录11.2 程序和图形见附录22.已知波形,求表达式并绘出各信号波形①)()2(k u k f - ②)2(+-k f ③)2()2(--k u k f 2.程序和图形见附录3附录1:clear% n1:起始时刻;n0:跳变时刻;n2:终⽌时刻;t1=input('请输⼊起始时刻n1=');t0=input('请输⼊跳变时刻n0=');t2=input('请输⼊终⽌时刻n2=');A=input('请输⼊幅度A=');t=t1:t2;n=length(t);tt=t1:t0;n1=length(tt);x=zeros(1,n);x(n1)=A*1;stem(t,x),grid ontitle('x(n)')axis([t1 t2 -0.2 A+1])n1=-2,n0=1,n2=3,A=2附录2:Clear%n1:起始时刻;m1第⼀次跳变时刻;m2:第⼆次跳变时刻;n2:终⽌时刻;t1=input('请输⼊起始时刻n1=');t0=input('请输⼊第⼀次跳变时刻m1=');t3=input('请输⼊第⼆次跳变时刻m2=');t2=input('请输⼊终⽌时刻n2=');A=input('请输⼊幅度A=');t=t1:t2;n=length(t);tt=t0:t2;n1=length(tt);x=[zeros(1,n-n1),ones(1,n1)];ttt=t3:t2;n2=length(ttt);y=[zeros(1,n-n2),ones(1,n2)];z=A*(x-y);stem(t,z),grid ontitle('x(n)')axis([t1, t2 ,min(z)-1, max(z)+1]) n1=-3,n2=3,m1=-1,m2=1,A=2附录3:1.离散序列反褶函数(lsfz.m)function[f,k]=lsfz(f1,k1)f=fliplr(f1);k=-fliplr(k1);2.离散序列移位函数(lspy.m)function[f,k]=lspy(ff,kk,k0)k=kk+k0;f=ff;3.离散序列相乘函数(lsxc.m)function[f,k]=lsxc(f1,f2,k1,k2)k=min(min(k1),min(k2)):max(max(k1),max(k2)); s1=zeros(1,length(k));s2=s1;s1(find((k>=min(k1))&(k<=max(k1))==1))=f1;s2(find((k>=min(k2))&(k<=max(k2))==1))=f2;f=s1.*s2;Return4.主程序:cleari=1;for m=-3:4if m<0f(i)=m+3;elseif(m==4)f(i)=0;elsef(i)=3;endi=i+1;end%f(k)m=-3:4subplot(221),stem(m,f,'filled'),grid on,title('f(k)') axis([min(m)-1,max(m)+1,min(f)-0.5,max(f)+1]) i=1;for n=-4:6if n<0u(i)=0;elseu(i)=1;endi=i+1;endn=-4:6m=-3:4%f(k-2)[y1,k1]=lspy(f,m,2);%f(-k)[y2,k2]=lsfz(f,m);%u(k-2)[y3,k3]=lspy(u,n,2);%f(k-2)u(k)[z1,k]=lsxc(y1,u,k1,n)subplot(222),stem(k,z1,'filled'),grid on,title('f(k-2)u(n)')axis([min(k)-1,max(k)+1,min(z1)-0.5,max(z1)+1])%f(-k+2)[z2,w2]=lspy(y2,k2,2)subplot(223),stem(w2,z2,'filled'),grid on,title('f(-k+2)')axis([min(w2)-1,max(w2)+1,min(z2)-1,max(z2)+1])%f(k-2)u(k-2)[z3,w3]=lsxc(y1,y3,k1,k3)subplot(224),stem(w3,z3,'filled'),grid on,title('f(k-2)u(k-2)') axis([min(w3)-1,max(w3)+1,min(z3)-0.5,max(z3)+0.5])。
南京信息工程大学实验(实习)报告实验(实习)名称实验一实验(实习)日期 2019年3月19 指导教师院专业年级班次姓名学号一、实验目的(1)学会使用MA TLAB产生常见的连续时间信号和离散时间信号;(2)学会使用MA TLAB完成一些信号的基本运算;(3)熟悉MATLAB的基本操作,以及一些基本函数的使用,为后续的实验奠定基础。
二、实验内容1.利用MATLAB绘制单位冲击信号,单位阶跃信号,指数信号,单位矩形信号,抽样信号,正弦信号(分别取不同周期)(1)单位冲击信号代码:T=1000;t=linspace(0,10,T);t1=linspace(-5,5,T);f1=stepfun(t1,-1/T)-stepfun(t1,1/T);plot(t1,f1);grid on;axis([-5 5 -1 2])xlabel('t');ylabel('c(t)');title('单位冲击信号');(2)单位阶跃信号T=1000;t=linspace(-5,5,T);f1=stepfun(t,0);plot(t,f1);grid on;axis([-5 5 -1 2]);xlabel('t');ylabel('u(t)');title('单位阶跃信号');(3)指数信号T=1000;t=linspace(-5,5,T);xe=exp(t);subplot(2,1,1);plot(t,xe);grid on;axis([-5 3 -0.5 20]); xlabel('t');ylabel('x(t)');title('指数信号1');subplot(2,1,2);xe=exp(-t);plot(t,xe);grid on;axis([-3 3 -0.5 20]); xlabel('t');ylabel('x(-t)');title('指数信号2');(4)单位矩形信号T=1000;t=linspace(-5,5,T);xt=rectpuls(t,1);plot(t,xt);grid on;axis([-2 2 -0.5 1.5]); xlabel('t');ylabel('x(t)');title('单位矩形信号');(5)抽样信号T=10000;t=linspace(-100,100,T);xt=sinc(t/pi);plot(t,xt);grid on;axis([-100 100 -0.3 1.1]);(6)正弦信号w=100;T=12000;t=linspace(-1,10,T);xt=sin(w*t);subplot(3,1,1);plot(t,xt);grid on;axis([-0.2 0.2 -1.5 1.5]); xlabel('t');ylabel('x(t)');title('w=100');w2=50;T=12000;t=linspace(-1,10,T);xe=sin(w2*t);subplot(3,1,2);plot(t,xe);grid on;axis([-0.2 0.2 -1.5 1.5]); xlabel('t');ylabel('x(t)');title('w=50');w3=200;T=12000;t=linspace(-1,10,T);xr=sin(w3*t);subplot(3,1,3);plot(t,xr);grid on;axis([-0.2 0.2 -1.5 1.5]); xlabel('t');ylabel('x(t)');title('w=200');2.利用MATLAB绘制单位冲击序列,单位阶跃序列,实指数序列(1)单位冲击序列n=50;x=zeros(1,n);x(1)=1;xn=0:n-1;stem(xn,x);grid on;axis([-1 25 0 1.2]);xlabel('n');ylabel('c(n)');title('单位冲击序列');(2)单位阶跃序列n=50;x=ones(1,n);xn=0:n-1;stem(xn,x);grid on;axis([-5 25 0 1.2]);xlabel('n');ylabel('u(n)');title('µ¥Î»½×Ô¾ÐòÁÐ');(3)实指数序列n=0:20;a1=2;a2=-2;a3=0.5;a4=-0.5;xn1=a1.^n;xn2=a2.^n;xn3=a3.^n;xn4=a4.^n;subplot(2,2,1);stem(xn1);grid on;axis([0 20 0 600000]);xlabel('n');ylabel('xn1(n)');title('实指数序列xn1(n)[a>1]');subplot(2,2,2);stem(xn2);grid on;axis([0 20 -150000 300000]); xlabel('n');ylabel('xn2(n)');title('实指数序列xn2(n)[a<-1]');subplot(2,2,3);stem(xn3);grid on;axis([0 20 0 1.3]);xlabel('n');ylabel('xn3(n)');title('实指数序列xn3(n)[1>a>0]');subplot(2,2,4);stem(xn4);grid on;axis([0 20 -0.7 1.3]);xlabel('n');ylabel('xn4(n)');title('实指数序列xn4(n)[0>a>-1]');3.讨论题:已知连续信号,当抽样间隔分别取T=0.08, 0.16,和0.24时所对应的离散余弦信号的波形。
数字信号处理课程实验报告实验名称离散信号及离散系统的MATLAB编程实现系别教师姓名实验地点实验日期一、实验内容1、用MATLAB仿真(编写)离散序列2、常见序列运算3、差分方程的求解4、系统零极点的求解。
(红色部分为必做项目)二、实验目的1. 复习离散时间的信号和系统,复习离散时间重要类型的信号和它们的运算的实现。
2. 熟悉MATLAB软件的集成开发环境,学会利用MATLAB编程及获得帮助的方法。
3. 学会利用MATLAB的绘图功能。
三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况)matlab软件,计算机四、实验试做记录(含程序、数据记录及分析)1、 Matlab表示序列MATLAB中,可采用向量表示序列,由于MATLAB中对序列下标默认为从1开始递增,因此要表示离散信号,一般应采用两个向量分别对信号的自变量和因变量进行描述。
如, n= -3~4,在MATLAB中表示为>> n = [-3, -2, -1, 0, 1, 2, 3, 4]; %自变量取值>> x = [ 2, 1, -1, 0, 1, 4, 3, 7]; %因变量取值说明:(1)向量可用方括号[ ]表示。
(2)当向量取值连续变化时可用冒号运算符“:”简化赋值过程,如的n值,可简化为n=[-3:4]或n= -3:4 。
(3)分号“;”表示不回显表达式的值。
(4)“%”表示其后内容为注释对象。
(5)符号“>>”是MATLAB命令窗口的输入提示符,此外,为便于多次调用,也可在m文件中输入相应的命令语句。
利用MATLAB,还可对信号的波形进行描述,常采用的绘图语句有stem,plot,subplot, axis,title,xlabel,ylabel,gtext, hold on, hold off, grid 等。
其中stem 绘制离散图形;plot 绘制连续图形;subplot 用于绘制子图,应在stem 或plot 语句前调用;axis 指定x 和y轴的取值范围,用在stem或plot语句后;title 标注图形名称,xlabel, ylabel 分别标注x轴和y轴名称;gtext可将标注内容放置在鼠标点击处;hold on和 hold off 用于控制对象绘制方式,是在原图上还是在新图上绘制;grid用于绘制网格。
1. 单位抽样序列,或称为离散时间冲激,单位冲激:⎩⎨⎧=01)(n δ 00≠=n n 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ0≠=n k n 2.单位阶跃序列⎩⎨⎧01)(n u 00<≥n n 在MATLAB 中可以利用ones( )函数实现。
);,1(N ones x =3.正弦序列)(cos )(0φω+=n A n x 这里,,,0ωA 和φ都是实数,它们分别称为本正弦信号)(n x 的振幅,角频率和初始相位。
πω200=f 为频率。
4.复正弦序列 n j e n x ω=)(5.实指数序列n A n x α=)(6. 随机序列长度为N 的随机序列基本数学函数参考教材P69页以及随后的使用说明。
注意使用行向量,特别是冒号运算符。
举例,长度为N 的实指数序列在MATLAB 中实现:n a x N n .^1:0=-=1. 单位采样长度为N 的单位采样序列u(n)可以通过下面的MATLAB 命令获得:u=[1 )1,1(-N zeros ];延迟M 个采样点的长度为N 的单位采样序列ud(n)(M<N)可以用下面命令获得:ud=[),1(M zeros 1 )1,1(--M N zeros ];2. 单位阶跃序列长度为N 的单位阶跃序列s(n)可以用下面的MATLAB 命令获得:)];,1([N ones s =延迟的单位阶跃序列可以使用类似于单位采样序列的方法获得。
3. 正弦序列长度为N 的正弦序列在MATLAB 中实现:)/***2cos(*1:0phase Fs n f pi A x N n +=-=4. 指数序列长度为N 的指数序列在MATLAB 中实现:)**exp(1:0n j x N n ω=-=5. 实指数序列长度为N 的实指数序列在MATLAB 中实现:n a x N n .^1:0=-=6. 随机序列长度为N 的随机序列在MATLAB 中实现:);,1(N rand x =。
实验一离散信号的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。
同样地,我们还可以对离散信号进行其他基本操作。
四、实验结果与分析通过本实验,我们成功地生成了离散正弦波信号,并将其绘制出来。
1. 单位抽样序列,或称为离散时间冲激,单位冲激:
⎩
⎨⎧=01)(n δ 00≠=n n 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:
⎩⎨⎧=-01)(k n δ
0≠=n k n 2.单位阶跃序列
⎩
⎨⎧01)(n u 00<≥n n 在MATLAB 中可以利用ones( )函数实现。
);,1(N ones x =
3.正弦序列
)(cos )(0φω+=n A n x 这里,
,,0ωA 和φ都是实数,它们分别称为本正弦信号)(n x 的振幅,角频率和初始相位。
πω200=f 为频率。
4.复正弦序列 n j e n x ω=)(
5.实指数序列
n A n x α=)(
6. 随机序列
长度为N 的随机序列
基本数学函数参考教材P69页以及随后的使用说明。
注意使用行向量,特别是冒号运算符。
举例,长度为N 的实指数序列在MATLAB 中实现:
n a x N n .^1
:0=-=
1. 单位采样
长度为N 的单位采样序列u(n)可以通过下面的MATLAB 命令获得:
u=[1 )1,1(-N zeros ];
延迟M 个采样点的长度为N 的单位采样序列ud(n)(M<N)可以用下面命令获得:
ud=[),1(M zeros 1 )1,1(--M N zeros ];
2. 单位阶跃序列
长度为N 的单位阶跃序列s(n)可以用下面的MATLAB 命令获得:
)];,1([N ones s =
延迟的单位阶跃序列可以使用类似于单位采样序列的方法获得。
3. 正弦序列
长度为N 的正弦序列在MATLAB 中实现:
)/***2cos(*1
:0phase Fs n f pi A x N n +=-=
4. 指数序列
长度为N 的指数序列在MATLAB 中实现:
)**exp(1
:0n j x N n ω=-=
5. 实指数序列
长度为N 的实指数序列在MATLAB 中实现:
n a x N n .^1
:0=-=
6. 随机序列
长度为N 的随机序列在MATLAB 中实现:
);,1(N rand x =。