离散信号的产生及运算
- 格式:doc
- 大小:199.55 KB
- 文档页数:5
(clf;--clc;clear;)实验1 常见离散信号产生和实现一、实验目的:1、加深对常用离散信号的理解;2、掌握matlab 中一些基本函数的建立方法。
二:matlab 使用1)创建M 文件 File-→New-→M-file 2)运行 Debug->run注:在试验过程中若有某些函数不懂,可以通过Help->search->输入要查询的函数名即可二、实验原理:1.单位抽样序列⎩⎨⎧=01)(n δ≠=n n 在MATLAB 中可以利用zeros()函数实现。
;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ≠=n kn 2.单位阶越序列⎩⎨⎧01)(n u00<≥n n 在MATLAB 中可以利用ones()函数实现。
);,1(N ones x = %一个长度为N 的零矩阵3.正弦序列)/2sin()(ϕπ+=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=-=三、实验内容实现和图形生成1、五种基本函数的生成程序如下:(1)、单位抽样序列% 单位抽样序列和延时的单位抽样序列 clf; % Clear current figure window n=0:10;x1=[1 zeros(1,10)];x2=[zeros(1,5) 1 zeros(1,5)]; subplot(1,2,1);stem(n,x1);xlabel ('时间序列n');ylabel('振幅');title('单位抽样序列x1'); subplot(1,2,2);stem(n,x2); xlabel('时间序列n');ylabel('振幅');title('延时了5的单位抽样序列');(2)、单位阶越序列clf;n=0:10;u=[ones(1,11)];stem(n,u);xlabel ('时间序列n');ylabel('振幅');title('单位阶越序列');所得的图形如下所示:(3)正弦函数clf;n=1:30;x=2*sin(pi*n/6+pi/3);stem(n,x); xlabel ('时间序列n');ylabel('振幅');title('正弦函数序列x=2*sin(pi*n/6+pi/3)');(4)、复指数序列clf;n=1:30;x=2*exp(j*3*n);stem(n,x); xlabel ('时间序列n');ylabel('振幅');title('复指数序列x=2*exp(j*3*n)'); 图形如下:(5)指数序列 clf; n=1:30; x=1.2.^n;stem(n,x); xlabel ('时间序列n');ylabel('振幅');title('指数序列x=1.2.^n');2、绘出信号zne n x =)(,当6)12/1(πjz +-=、6)12/1(πjz +=时、121=z 、62πjz +=、6πjz =时的信号实部和虚部图;程序如下: clf;z1=-1/12+j*pi/6;z2=1/12+j*pi/6;z3=1/12;z4=2+j*pi/6;z5=j*pi/6; n=0:20;x1=exp(z1*n);x2=exp(z2*n); x3=exp(z3*n);x4=exp(z4*n); x5=exp(z5*n); subplot(5,2,1);stem(n,real(x1)); xlabel ('时间序列n');ylabel('实部');title('复指数z1=-1/12+j*pi/6时序列实部'); subplot(5,2,2);stem(n,imag(x1)); xlabel ('时间序列n');ylabel('虚部');title('复指数z1=-1/12+j*pi/6时序列虚部'); subplot(5,2,3);stem(n,real(x2)); xlabel ('时间序列n');ylabel('实部');title('复指数z2=1/12+j*pi/6时序列实部');subplot(5,2,4);stem(n,imag(x2)); xlabel ('时间序列n');ylabel('虚部');title('复指数z2=1/12+j*pi/6时序列虚部'); subplot(5,2,5);stem(n,real(x3)); xlabel ('时间序列n');ylabel('实部');title('复指数z3=1/12时序列实部'); subplot(5,2,6);stem(n,imag(x3)); xlabel ('时间序列n');ylabel('虚部');title('复指数z3=1/12时序列虚部'); subplot(5,2,7);stem(n,real(x4)); xlabel ('时间序列n');ylabel('实部');title('复指数z4=2+j*pi/6时序列实部'); subplot(5,2,8);stem(n,imag(x4)); xlabel ('时间序列n');ylabel('虚部');title('复指数z4=2+j*pi/6时序列虚部'); subplot(5,2,9);stem(n,real(x5)); xlabel ('时间序列n');ylabel('实部');title('复指数z5=j*pi/6时序列实部'); subplot(5,2,10);stem(n,imag(x5)); xlabel ('时间序列n');ylabel('虚部');title('复指数z5=j*pi/6时序列虚部');由上图的实部部分可以看出,Z=pi/6时,序列周期为12。
使用matlab来实现时域离散信号的产生实验心得【标题】使用Matlab实现时域离散信号的产生实验心得【导语】在信号与系统课程的学习中,时域离散信号的产生是一个重要的实验内容。
本文将结合个人实验经验,探讨如何使用Matlab来实现时域离散信号的产生,以及实验心得体会。
【主体内容】一、时域离散信号的概念时域离散信号是指信号在时域上是离散的,其取样时间是离散的。
与连续信号相对应,离散信号具有一些独特的特性和处理方法。
在实际应用中,我们经常需要生成各种形式的时域离散信号,用于系统模拟、滤波器设计等方面。
二、Matlab在时域离散信号产生中的应用1. 生成简单的离散信号在Matlab中,可以利用基本的数学函数和操作符来生成简单的离散信号。
可以利用sin、cos等函数来生成正弦信号、余弦信号,利用随机数函数来生成随机信号等。
Matlab还提供了丰富的绘图函数,可以直观地展示生成的离散信号。
2. 生成复杂的离散信号除了基本的数学函数外,Matlab还提供了丰富的信号处理工具箱,可以用于生成各种复杂的离散信号。
可以利用波形合成函数生成有限长序列、周期序列等特殊形式的信号;还可以利用滤波器设计函数生成特定频率特性的信号等。
三、实验心得与体会在实验中,我深切体会到Matlab在时域离散信号生成方面的强大功能和便捷性。
通过Matlab,我能够快速生成各种形式的离散信号,并对其进行分析、处理和展示。
Matlab的直观、交互式界面也使得实验过程更加高效和愉悦。
在实践中,我也发现了一些问题和经验总结。
在生成复杂离散信号时,需要深入理解各种信号处理工具箱的使用方法,以及不同函数的参数设置;在展示离散信号时,需要注意选择合适的绘图方式,清晰地展现信号的特点和规律。
【总结与回顾】本文通过介绍时域离散信号的概念和Matlab在信号生成中的应用,共享了个人的实验心得和体会。
希望能够对读者有所启发,开拓视野,加深对时域离散信号的理解和掌握。
离散信号的产生、显示及离散序列的卷积和matlab实现离散信号的产生可以通过一个生成离散序列的函数来实现。
Matlab提供了一些内置的函数来生成常见的离散信号,例如单位阶跃函数(heaviside)、单周期方波(square)、正弦信号(sin)、脉冲(impulse)等。
离散信号的显示可以使用Matlab的plot函数来实现。
将离散序列作为函数的输入参数,然后使用plot函数绘制出序列的图像。
离散序列的卷积可以使用conv函数来实现。
conv函数接受两个输入信号,并返回它们的离散卷积结果。
下面是一个示例代码演示离散信号的产生、显示和离散序列的卷积:```matlab% 产生离散信号n = 0:1:9; % 定义离散点的范围x1 = heaviside(n-2); % 单位阶跃函数x2 = square(n); % 单周期方波x3 = sin(n); % 正弦信号% 显示离散信号figure;subplot(3,1,1);stem(n, x1);title('单位阶跃函数');subplot(3,1,2);stem(n, x2);title('单周期方波');subplot(3,1,3);stem(n, x3);title('正弦信号');% 离散序列的卷积h = [1, 2, 1]; % 卷积核y = conv(x3, h); % 卷积运算figure;subplot(2,1,1);stem(x3);title('输入信号');subplot(2,1,2);stem(y);title('卷积结果');```在上面的代码中,首先定义了离散序列的范围n,然后使用内置函数生成了三个不同的离散信号x1、x2和x3。
接下来,使用subplot函数将三个离散信号的图像显示在一个图形窗口中。
最后,定义了一个卷积核h,并使用conv函数对x3进行卷积运算,得到卷积结果y。
实验一 时域离散信号的产生与基本运算一、实验目的1、了解常用的时域离散信号及其特点。
2、掌握MATLAB 产生常用时域离散信号的方法。
3、掌握时域离散信号简单的基本运算方法。
二、实验内容1、自己设定参数,分别表示并绘制单位抽样序列、单位阶跃序列、正弦序列、 实指数序列、随机序列。
2、自己设定参数,分别表示并绘制信号移位、信号相加、信号相乘、信号翻转、 信号和、信号积、信号能量。
3、已知信号(1) 描绘)(n x 序列的波形。
(2) 用延迟的单位脉冲序列及其加权和表示)(n x 序列。
(3) 描绘以下序列的波形:)2()(),2(2)(),2(2)(321n x n x n x n x n x n x -=+=-=三、实现步骤1、自己设定参数,分别表示并绘制单位抽样序列、单位阶跃序列、正弦序列、 实指数序列、随机序列。
(1)单位抽样序列程序:x=zeros(1,10);x(2)=1;stem(x,'filled')axis([0,10,-0.2,1]);title('µ¥Î»³éÑùÐòÁÐ');-0.200.20.40.60.8图1 (2)单位阶跃序列程序:N=10;u=ones(1,N);stem(u,'filled')axis([-10,10,0,1]);title('µ¥Î»½×Ô¾ÐòÁÐ');00.10.20.30.40.50.60.70.80.91单位阶跃序列图2 (3)正弦序列程序:x=-20:1:20;y=sin(0.2*pi.*x+0.5*pi);stem(x,y,'filled');axis([-20,20,-2,2]);title('ÕýÏÒÐòÁÐ');正弦序列-20-15-10-505101520图3 (4)实指数序列a=1/2程序:n=0:10;a1=1/2;y1=a1.^n;stem(n,y1,'filled');axis([0,10,0,1]);title('ʵָÊýÐòÁУ¬a=1/2');实指数序列,a=1/2图4 5实指数序列a=2程序:n=0:10;a2=2;y2=a2.^n;stem(n,y2,'filled');title('ʵָÊýÐòÁÐ,a=2');实指数序列,a=2图5 6 随机序列程序:y=rand(1,20);stem(y,'filled');title('Ëæ»úÐòÁÐ');0246810121416182000.10.20.30.40.50.60.70.80.91随机序列图62、自己设定参数,分别表示并绘制信号移位、信号相加、信号相乘、信号翻转、 信号和、信号积、信号能量。
常见离散信号产生和实现实验报告实验1常见离散信号产生和实现学院信息科学与工程学院专业通信工程1班姓名学号一、实验目的1、加深对常用离散信号的理解;2、熟悉使用MATLAB在时域中产生一些基本的离散时间信号。
二、实验原理MATLAB语言提供了一系列函数用来产生信号,如exp,sin,cos, square,sawtooth,ones,zeros等函数。
1.基本信号序列1)单位抽样序列???=01)(nδ≠=n n在MATLAB中可以利用zeros()函数实现。
x=[1zeros(1, n-1)]程序:clear all;n=-20:20;u=[zeros(1,20)ones(1,21)];stem(n,u)xlabel('Time index n');ylabel('Amplitude'); title('p21');axis([-20200 1.2]);图形:Request1:编写一个)(k n-δ的函数。
???=-01)(k nδ≠=n kn程序:clear all;n=-20:20;k=5;u=[zeros(1,20+k)ones(1,21-k)];stem(n,u)xlabel('Time index n');ylabel('Amplitude'); title('p22');axis([-20200 1.2]);图形:(2)单位阶跃序列???01)(n u00<≥n n在MATLAB中可以利用ones()函数实现。
);,1(N ones x=Request2:编写一个)(k n u-的函数。
程序:clf;n=-20:20;u=[zeros(1,20)1zeros(1,20)];stem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence p10');axis([-20200 1.2]);图形:Request2:编写一个)(k n u-的函数。
第1篇一、实验目的1. 理解时域离散信号的基本概念和特性。
2. 掌握时域离散信号的表示方法。
3. 熟悉常用时域离散信号的产生方法。
4. 掌握时域离散信号的基本运算方法。
5. 通过MATLAB软件进行时域离散信号的仿真分析。
二、实验原理时域离散信号是指在时间轴上取离散值的一类信号。
这类信号在时间上不连续,但在数值上可以取到任意值。
时域离散信号在数字信号处理领域有着广泛的应用,如通信、图像处理、语音处理等。
时域离散信号的基本表示方法有:1. 序列表示法:用数学符号表示离散信号,如 \( x[n] \) 表示离散时间信号。
2. 图形表示法:用图形表示离散信号,如用折线图表示序列。
3. 时域波形图表示法:用波形图表示离散信号,如用MATLAB软件生成的波形图。
常用时域离散信号的产生方法包括:1. 单位阶跃信号:表示信号在某个时刻发生突变。
2. 单位冲激信号:表示信号在某个时刻发生瞬时脉冲。
3. 正弦信号:表示信号在时间上呈现正弦波形。
4. 矩形脉冲信号:表示信号在时间上呈现矩形波形。
时域离散信号的基本运算方法包括:1. 加法:将两个离散信号相加。
2. 乘法:将两个离散信号相乘。
3. 卷积:将一个离散信号与另一个离散信号的移位序列进行乘法运算。
4. 反褶:将离散信号沿时间轴翻转。
三、实验内容1. 实验一:时域离散信号的表示方法(1)使用序列表示法表示以下信号:- 单位阶跃信号:\( u[n] \)- 单位冲激信号:\( \delta[n] \)- 正弦信号:\( \sin(2\pi f_0 n) \)- 矩形脉冲信号:\( \text{rect}(n) \)(2)使用图形表示法绘制以上信号。
2. 实验二:时域离散信号的产生方法(1)使用MATLAB软件生成以下信号:- 单位阶跃信号- 单位冲激信号- 正弦信号(频率为1Hz)- 矩形脉冲信号(宽度为2)(2)观察并分析信号的波形。
3. 实验三:时域离散信号的基本运算(1)使用MATLAB软件对以下信号进行加法运算:- \( u[n] \)- \( \sin(2\pi f_0 n) \)(2)使用MATLAB软件对以下信号进行乘法运算:- \( u[n] \)- \( \sin(2\pi f_0 n) \)(3)使用MATLAB软件对以下信号进行卷积运算:- \( u[n] \)- \( \sin(2\pi f_0 n) \)(4)使用MATLAB软件对以下信号进行反褶运算:- \( u[n] \)4. 实验四:时域离散信号的仿真分析(1)使用MATLAB软件对以下系统进行时域分析:- 系统函数:\( H(z) = \frac{1}{1 - 0.5z^{-1}} \)(2)观察并分析系统的单位冲激响应。
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 运算。
实验离散信号的产生及运算实验报告一实验任务
二实验程序及结果
n=0 :20;
x=3*sin(pi*n/4+4/pi);
subplot(2, 2, 1), stem(n,x);
title(' x=3*sin(pi*n/4+4/pi)');
n=-20*pi:20*pi;
f=sinc(n/pi);
subplot(2,2,2), stem(n,f);
title(' f=sinc(n/pi)');
n1 = -5; n2 = 5; n0= 0;
n = n1:n2;
x =[n>=n0];
n1 = -5; n2 = 5; n0= 0;
n = n1:n2;
f =[ n >= n0];
subplot(2,2,3), stem(n, f,'filled'); title('f(n)=u(n)');
n1 = -5; n2 = 5; n01 = -3; n02 = 4;
n = n1:n2;
x1 = [(n-n01) == 0];
x2 = [(n-n02) == 0];
x=x1+2*x2;
subplot(3,1,1);stem(n,x1,'filled','k');
ylabel('n+3')
subplot(3,1,2);stem(n,x2,'filled','k');
ylabel('n-4')
subplot(3,1,3);stem(n,x,'filled','k');
ylabel('x(n)');
n=0:24;
x1=exp(-n/16);
x2=5*sin(2*pi*n/10);
x=x1.*x2;
subplot(3,1,1);stem(n,x1,'filled','k'); title('x1=exp(-n/16)');
subplot(3,1,2);stem(n,x2,'filled','k'); title(' x2=5*sin(2*pi*n/10)');
subplot(3,1,3);stem(n,x,'filled','k'); title('x(n)=x1*x2');
n=0:20;
x=n.*sin(n);
subplot(3,2,1),stem(n,x,'filled','k'); title('原函数:x(n)=nsin(n)');
y1=(n-3).*sin(n-3);
subplot(3,2,2),stem(n,y1,'filled','k'); title('序列移位:y1=x(n-3)');
y2= fliplr(x);
n1 = -fliplr(n);
subplot(3,2,3),stem(n1,y2,'filled','k'); title('序列反折:y2=x(-n)');
y3=-x;
subplot(3,2,4),stem(n,y3,'filled','k'); title('序列倒相:y3=-x(n)');
y4=fliplr(y1);
n2=-fliplr(n);
subplot(3,2,5),stem(n2,y4,'filled','k'); title('序列移位+反折:y4=x(-n+3)');
y5=(n/2).*sin(n/2);
subplot(3,2,6),stem(n,y5,'filled','k'); title('序列的尺度变换:y5=x(n/2)');
三实验过程中出现的问题及解决方法
1、安装的MATLAB是2013英文版,用起来很不顺利,查了部分单词,多加联系掌握基本用法即可。
2、方程式中遗漏‘.’,出错。
仔细检查,改正方程式。
四实验总结
1、一个点可能就是程序成败的关键,认真仔细,细节决定成败。
2、尽可能是图形看起来有对比性、简洁。
既能让做的人思考,又能让看的人易发现规律性。