实验三 信号卷积的MATLAB实现(DOC)

合集下载

实验报告信号卷积实验

实验报告信号卷积实验

一、实验目的1. 理解卷积的概念及其物理意义。

2. 掌握卷积运算的原理和方法。

3. 通过实验加深对卷积运算在实际应用中的理解。

二、实验原理1. 卷积的定义:卷积是一种线性运算,它描述了两个信号在时域上的相互作用。

对于两个连续时间信号f(t)和g(t),它们的卷积定义为:F(t) = ∫f(τ)g(t-τ)dτ其中,F(t)是卷积结果,f(τ)是信号f(t)的任意时刻的值,g(t-τ)是信号g(t)在时刻t-τ的值。

2. 卷积的性质:卷积具有交换律、结合律和分配律等性质。

其中,交换律是指f(t)和g(t)的卷积与g(t)和f(t)的卷积相等;结合律是指三个信号f(t)、g(t)和h(t)的卷积可以分别进行两两卷积后再进行一次卷积;分配律是指一个信号与两个信号的卷积等于该信号分别与两个信号卷积后的和。

三、实验内容1. 实验一:连续时间信号卷积实验(1)选用信号:选取两个连续时间信号f(t)和g(t),其中f(t)为矩形脉冲信号,g(t)为指数衰减信号。

(2)卷积计算:根据卷积的定义,计算f(t)和g(t)的卷积F(t)。

(3)结果分析:观察F(t)的波形,分析卷积结果的物理意义。

2. 实验二:离散时间信号卷积实验(1)选用信号:选取两个离散时间信号f[n]和g[n],其中f[n]为单位阶跃信号,g[n]为矩形脉冲信号。

(2)卷积计算:根据离散时间信号卷积的定义,计算f[n]和g[n]的卷积F[n]。

(3)结果分析:观察F[n]的波形,分析卷积结果的物理意义。

3. 实验三:MATLAB仿真实验(1)选用信号:选取两个连续时间信号f(t)和g(t),其中f(t)为正弦信号,g(t)为余弦信号。

(2)MATLAB编程:利用MATLAB的信号处理工具箱,编写程序实现f(t)和g(t)的卷积运算。

(3)结果分析:观察MATLAB仿真得到的卷积结果,分析其物理意义。

四、实验结果与分析1. 实验一:连续时间信号卷积实验(1)实验结果:通过计算得到f(t)和g(t)的卷积F(t)的波形。

卷积运算的matlab命令及其参数设置规则

卷积运算的matlab命令及其参数设置规则

卷积运算是数字信号处理和图像处理中常用的一种运算方式,它在图像滤波、特征提取等领域中发挥着重要作用。

在Matlab中,卷积运算可以通过一些内置的函数实现,同时可以通过设置不同的参数来实现不同的卷积操作。

本文将结合实际案例,介绍卷积运算在Matlab 中的常用命令及其参数设置规则。

一、卷积运算的基本概念在数字信号处理和图像处理中,卷积运算是一种重要的数学运算。

它通常用于图像滤波、特征提取等方面。

卷积运算的基本原理是将一个函数与另一个函数的翻转及平移进行积分。

在离散情况下,卷积运算可以用离散的形式来表示如下:\[y[n] = \sum_{k=-\infty}^{\infty} x[k] \cdot h[n-k]\]其中,\(x[k]\)和\(h[n]\)分别代表输入信号和卷积核,\(y[n]\)代表卷积运算的输出结果。

二、Matlab中的卷积运算函数在Matlab中,可以使用conv函数来进行一维和二维的卷积运算。

conv函数的基本语法如下:```y = conv(x, h)```其中,x和h分别代表输入信号和卷积核,y代表卷积运算的输出结果。

这里需要注意的是,x和h的长度必须是有限的,而且二者不能交换位置。

在进行二维卷积运算时,可以使用conv2函数。

conv2函数的基本语法如下:```y = conv2(x, h)```其中,x和h分别代表输入图像和卷积核,y代表二维卷积运算的输出结果。

三、卷积运算参数的设置规则在进行卷积运算时,需要注意一些参数的设置规则,以确保卷积运算的正确性和有效性。

以下是一些常见的参数设置规则:1. 卷积核的选择:卷积核的选择对卷积运算的结果影响很大。

通常情况下,可以根据具体的应用需求来选择合适的卷积核,例如高斯滤波、边缘检测等。

2. 边界处理:在进行卷积运算时,往往需要考虑图像或信号的边界处理。

常见的处理方式包括零填充、边界拓展、周期延拓等。

3. 步长和填充:在进行卷积运算时,可以通过设置步长和填充参数来控制输出结果的大小。

实验三 MATLAB计算结果可视化和卷积操作

实验三  MATLAB计算结果可视化和卷积操作

实验三MATLAB计算结果可视化和卷积操作(一)实验目的1)掌握二维平面图形的绘制方法,能够使用这些方法进行常用的数据可视化处理。

2)掌握卷积运算。

(二)实验设备计算机,Matlab软件(三)实验要求本实验属于设计实验,请先根据(四)实验内容的(a)【matlab相关介绍及演示进行仿真】,并完成(b)【实验操作】。

请在页眉处填写班级、学号、姓名,并将实验报告命名为“实验三_学号_姓名”,并通过FTP上传至指定文件夹。

(四)实验内容(a)matlab相关介绍及演示MA TLAB在数据可视化方面的表现能力很强。

它的图形处理能力不仅功能强大,而且充分考虑了不同层次用户的不同需求,系统具有两个层次的绘图指令:一个层次是直接对图形句柄进行操作的底层绘图指令;另一层次是在底层指令基础上建立的高层绘图指令。

常用的MA TLAB绘图语句有figure、plot、subplot、stem等,图形修饰语具有title、axis、text 等。

(1)figure语句figure有两种用法。

当只有一句figure命令时,程序会创建一个新的图形窗口,并返回一个整数型的窗口编号。

当采用figure(n)时,表示将第n个图形窗口作为当前的图形窗口,将其显示在所有窗口的最前面。

如果该图形窗口不存在,则新建一个窗口,并赋以编号n。

(2)plot语句线形绘图函数。

用法为plot(x,y,’s’)。

参数x为横轴变量,y为纵轴变量,s用以控制图形的基本特征如颜色、粗细等,通常可以省略,常用方法如表2-1所示。

表2-1 plot命令的参数及其含义(3)subplot语句subplot(m,n,i)是分割显示图形窗口命令,它把一个图形窗口分为m行n列共m×n个小窗口,并指定第i个小窗口为当前窗口。

(4)二维统计分析图在MA TLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,…)例2-1 分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。

matlab卷积实验的内容

matlab卷积实验的内容

matlab卷积实验的内容卷积是数学和信号处理领域中常用的运算方法,可以用于信号滤波、图像处理、模拟电路等方面。

在Matlab中,卷积是一个常见的操作,可以利用卷积函数对信号进行处理。

在Matlab中,可以使用conv函数进行卷积运算。

conv函数的基本语法是:y = conv(x1, x2)其中x1和x2是要进行卷积运算的两个向量,y是卷积运算的结果。

卷积运算的结果长度是两个向量长度之和减1。

在进行卷积运算之前,我们先来了解一下卷积的原理。

数学上,卷积运算可以通过对两个函数进行积分得到。

对于离散信号来说,卷积运算可以通过对两个向量进行逐点相乘然后求和得到。

在Matlab中,我们可以通过创建两个向量来进行卷积运算的实验。

下面是一个简单的示例:x1 = [1 2 3 4];x2 = [0.1 0.2 0.3 0.4];y = conv(x1, x2)运行上述代码得到的结果是:y = [0.1 0.4 0.8 1.3 1.6 1.2]可以看到,卷积运算的结果是一个长度为6的向量。

这个结果的计算过程是:0.1*1 + 0.2*2 + 0.3*3 + 0.4*4 = 0.1 + 0.4 + 0.9 + 1.6 = 1.2。

除了使用conv函数外,Matlab还提供了一个更高级的卷积函数,即conv2函数。

conv2函数可以进行二维卷积运算,常用于图像处理。

假设我们有一个2x2的图像矩阵和一个3x3的卷积核,我们可以使用conv2函数对图像进行卷积运算。

下面是一个简单的示例:image = [1 2; 3 4];kernel = [0.1 0.2 0.3; 0.4 0.5 0.6; 0.7 0.8 0.9];result = conv2(image, kernel)运行上述代码得到的结果是:result = [4.0000 5.8000 7.0000; 7.6000 11.0000 9.8000;7.3000 10.2000 9.2000]可以看到,卷积运算的结果是一个3x3的矩阵。

实验三信号卷积的MATLAB实现(DOC)

实验三信号卷积的MATLAB实现(DOC)

实验三信号卷积的MATLAB 实现一、实验名称:信号卷积的MATLAB 实现二、实验目的:1. 增加学生对卷积的认识2. 了解MATLAB 这个软件的一些基础知识3. 利用MATLAB 计算信号卷积4. 验证卷积的一些性质三、实验原理:用MATLAB 实现卷积我们先必须从信号下手,先把信号用MATLAB 语句描述出来,然后再将这些信号带入到我们写好的求卷积的函数当中来计算卷积。

在本章中我们将信号分为连续信号和离散序列两种来实现卷积并验证卷积的一些性质。

MATLAB 强大的图形处理功能及符号运算功能,为我们实现信号的可视化提供了强有力的工具。

在MATLAB 中通常有两种方法来表示信号,一种是用向量来表示信号,另一种则是用符号运算的方法来表示信号。

用适当的MATLAB 语句表示出信号后,我们就可以利用MATLAB 的绘图命令绘制出直观的信号波形。

连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应的信号。

从严格意义上来讲,MATLAB 并不能处理连续信号,在MATLAB 中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。

在MATLAB 中连续信号可用向量或符号运算功能来表示。

1.向量表示法对于连续时间信号f(t),我们可以用两个行向量f和t来表示,其中向量t是行如t = tl: p:t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为中止时间,p为时间间隔。

向量f为连续信号f(t)在向量t所定义的时间点上的样值。

例如对于连续信号f(t)=s in (t),我们可以用如下两个向量来表示:t=-10:1.5:10; f=si n(t)用上述向量对连续信号表示后,就可以用plot命令来绘出该信号的时域波形。

Plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。

信号卷积在 MATLAB 中的实现

信号卷积在 MATLAB 中的实现

信号卷积在 MATLAB 中的实现宋德周【摘要】The core digital signal processing algorithm is the Discrete Fourier Transform (DFT), is the DFT to the signal in the digital domain and frequency domain are realized discrete,general-purpose computer which can handle discrete signal. Discrete Fourier transform, in communications, voice processing, image processing, radar, medical imaging and other fields is widely used, but this is by convolution and correlation operations on continuous signals and sequences based on spectral analysis. Volume integral for the circular convolution, linear convolution. This paper analyzes under what circumstances can use cyclic convolution operation instead of linear convolution and the corresponding program codes in MATLAB to achieve this on two sequences of arbitrary input cyclic convolution, the keyboard sequence can input the final results and waveform display.%核心的数字信号处理算法是离散傅立叶变换(DFT),是在数字域和频率域对信号的DFT 实现离散,通用计算机可以处理离散信号。

信号的时域表示以及卷积运算(MATLAB)

信号的时域表示以及卷积运算(MATLAB)

信号的时域表示【实验目的】利用MATLAB 实现信号的时域表示利用MATLAB 实现图形表示【实验内容(步骤)】软件仿真实验在此部分只需写出代码及相应的注释。

例题实验:clear;%清除工作空间的变量clf;%清除图形clc;%清除命令窗口中的命令t0=-1;%给t0赋值1,作为横轴的最小值tf=5;%给tf赋值5,作为横轴的最大值dt=0.05;%作为冒号表达式的步长t1=0;t=t0:dt:tf; %建立向量Len_t = length(t);%把向量t的长度赋值给Len_tn1 = floor((t1-t0)/dt);%选出t=0在向量t中对应的元素序号x1 = zeros(1,Len_t);%建立一个与t等长的一维零矩阵x1(n1) = 1/dt;%选出t=0在向量t中对应的元素subplot(2,2,1),stairs(t,x1),grid on%把图形窗口分割成2*2的四个部分,第一个部分用stairs函数画出单位冲击函数axis([-1,5,0,22])%控制坐标轴,横轴在-1到5之间,纵轴在0到22之间title('1.冲击信号');%给第一个图形命名% x2 = [zeros(1,n1-1),ones(1,Len_t-n1+1)];% x2 = (t>0);% x2 = 1/2*(sign(t-0)+1);%利用符号函数实现单位阶跃函数x2 = stepfun(t,t1);%建立一个向量x2,当t<t1时,元素都为0,当t>=t1时,元素都为1subplot(2,2,3),stairs(t,x2),grid on%在图形窗口的第三个部分画出单位阶跃函数axis([-1,5,0,1.1]) %设置显示的坐标轴的最大最小值title('2.单位阶跃信号'); %给第二个图形命名alpha = -0.5;%为x3中的alpha赋值omega = 10;%为x3中的omega赋值x3 = exp((alpha+j*omega)*t);%产生了一个复指数信号subplot(2,2,2),plot(t,real(x3)),grid on%在图形窗口的第二部分画出复指数信号的实部title('3.复指数跃信号(实部)'); %命名subplot(2,2,4),plot(t,imag(x3)),grid on%在图形窗口中的第四部分画出复指数信号的虚部title('4.复指数跃信号(虚部)'); %命名【实验结果及分析】图像截图:10HZ和16HZ的周期方波实验:实验步骤:t = linspace(-10,10,100); 产生一百个元素y = (square(t) + 1)./2; y的函数subplot(211); 分割成两块,进入第一块界面plot(t./(2*pi*10),y,'r-');grid on 产生10HZ 的方波axis([0,0.3,-1.2,1.2]);xlabel('t'),ylabel('y1'),title('10Hz');subplot(212); 进入第二块界面plot(t./(2*pi*16),y,'c-');grid on 产生16HZ 的方波axis([0,0.3,-1.2,1.2]);xlabel('t'),ylabel('y2'),title('16Hz');图像截图:连续信号的卷积实验实验步骤:clear %清除Workspace中的变量clc %清除Command Window中的命令uls=ones(1,10); %建立一个1*10的矩阵Length_u = length(uls); %把向量uls的长度赋给Length_uhls = exp(-0.1*(1:15)); %建立一个长度为15的向量hlsLength_h = length(hls); %把向量hls的长度赋给Length_hlmax = max(Length_u,Length_h); %把向量u的长度与向量h的长度中的最大值赋给lmax%if end 语句确定了nh与nu的值,用于下面的向量u与向量h中,保证两者长度相等if Length_u>Length_hnu=0; nh = Length_u - Length_h;elseif Length_u<Length_hnh=0; nu = Length_h - Length_u;elsenu=0; nh=0;end%nh=0 nu=5dt = 0.5;lt = lmax;%把向量u的长度与向量h的长度中的最大值赋给ltu = [zeros(1,lt),uls,zeros(1,nu),zeros(1,lt)];% 建立一个长度为45的向量,uls的值在中间,易于卷积t1 = (-lt+1:2*lt)*dt;%建立了一个长度为45,步长为0.5的向量,从-7到15h = [zeros(1,2*lt),hls,zeros(1,nh)];% 建立一个长度为45的向量,hls的值在末尾一段hf = fliplr(h);%将h进行反褶运算y = zeros(1,3*lt);%建立一个1*45的零矩阵for k = 0:2*lt%设置循环31次p = [zeros(1,k),hf(1:end-k)];%p是长度为45的向量,由向量hf平移k个单位而来y1 = u.*p*dt;%卷积中的相乘yk = sum(y1);%卷积中的积分(求和)y(k+lt+1) = yk;%给y中的元素赋值subplot(4,1,1);stairs(t1,u)%分割图形窗口为4*1,在第一部分画出要进行卷积的函数uaxis([-lt*dt,2*lt*dt,min(u),max(u)]),hold on%设置坐标轴的最值,并让图形等待ylabel('u(t)')%给y轴命名subplot(4,1,2);stairs(t1,p)%在图形窗口的第二部分画出要进行卷积的函数h(k-t)axis([-lt*dt,2*lt*dt,min(p),max(p)])%控制坐标轴的最值ylabel('h(k-t)')%给y轴命名subplot(4,1,3);stairs(t1,y1)%在图形窗口的第三部分画出u(t)*h(k-t)的阶梯状图形axis([-lt*dt,2*lt*dt,min(y1),max(y1)+eps])%控制坐标轴的最值ylabel('s=u*h(k-t)')%给y轴命名subplot(4,1,4);stem(k*dt,yk)%在图形窗口的第四部分画出卷积结果的点状图 axis([-lt*dt,2*lt*dt,floor(min(y)+eps),ceil(max(y+eps))])%控制坐标轴的最值hold on,ylabel('y(k)=sum(s)*dt')%给y轴命名pause(1),%每次循环暂停一秒,方便看清各个图形的变化End图像截图:矩形脉冲信号与锯齿波信号的卷积实验步骤:>> cleardt=0.001; 时间间隔t=0:dt;1; 变化范围f1=(t>0&t<1); 矩形脉冲subplot(311); 分割版面plot(t,f1);grid onxlabel('t'),ylabel('f1'),title('矩形脉冲');axis([-0.3,1.7,0,1.2]);f2=(t>0&t<1).*t; 锯齿波subplot(312);plot(t,f2);grid onxlabel('t'),ylabel('f2'),title('锯齿波');axis([-0.3,1.7,0,1.2]);f3=conv(f1,f2);f3=f3*dt; 实现卷积功能n=length(f1)+length(f2)-2;x=0:dt:n*dt;subplot(313);plot(x,f3);grid onxlabel('x'),ylabel('f3'),title('卷积');axis([-0.3,1.7,0,1.2]);图像截图:。

matlab卷积函数

matlab卷积函数

matlab卷积函数在Matlab中,卷积是一种常用的信号处理操作,它用于将两个函数(或向量)合并到一起。

Matlab提供了多个函数来执行卷积操作,其中最常用的是conv和conv2函数。

1. conv函数conv函数可用于一维和多维信号的卷积操作。

它的基本语法如下:y = conv(x, h)其中,x是输入信号,h是卷积核或输入信号的反转版本。

返回值y 是卷积结果。

-对于一维信号:例如,我们有一个包含N个元素的向量x和一个包含M个元素的向量h,则卷积操作可以用以下代码实现:y = conv(x, h)该代码将向量x和h卷积在一起,并将结果存储在向量y中。

-对于二维信号:对于二维信号,conv函数的使用与一维信号类似,只是输入和输出的维数不同。

我们可以使用以下代码将一个二维矩阵convolve与另一个二维矩阵h:y = conv2(x, h)2. conv2函数conv2函数也用于一维和二维信号的卷积操作,但它提供了更多的选项和灵活性。

其基本语法如下:y = conv2(x, h)其中,x是输入信号,h是卷积核或输入信号的反转版本。

返回值y 是卷积结果。

-对于一维信号:该函数的用法与conv函数类似,只是二者返回结果的维数不同。

conv2函数的结果将是一个大小为(N+M-1)的向量,其中N和M分别是输入信号x和卷积核h的长度。

-对于二维信号:对于二维信号,我们可以使用conv2函数对两个二维矩阵x和h进行卷积操作。

该函数将返回一个与输入矩阵尺寸相关的矩阵,其中包含了卷积的结果。

y = conv2(x, h, shape)shape参数是一个字符串,用于指定输出矩阵的维数。

可以选择的选项包括:- 'full':(默认)输出矩阵的大小将是(N+M-1)。

- 'same':输出矩阵的大小将与输入矩阵相同,即N。

- 'valid':在输出矩阵中,有效的卷积元素将保留,其中无需使用输入矩阵外的任何元素。

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

实验三信号卷积的MATLAB实现一、实验名称:信号卷积的MATLAB实现二、实验目的:1.增加学生对卷积的认识2.了解MATLAB这个软件的一些基础知识3.利用MATLAB计算信号卷积4.验证卷积的一些性质三、实验原理:用MATLAB实现卷积我们先必须从信号下手,先把信号用MATLAB语句描述出来,然后再将这些信号带入到我们写好的求卷积的函数当中来计算卷积。

在本章中我们将信号分为连续信号和离散序列两种来实现卷积并验证卷积的一些性质。

MATLAB强大的图形处理功能及符号运算功能,为我们实现信号的可视化提供了强有力的工具。

在MATLAB中通常有两种方法来表示信号,一种是用向量来表示信号,另一种则是用符号运算的方法来表示信号。

用适当的MATLAB 语句表示出信号后,我们就可以利用MATLAB的绘图命令绘制出直观的信号波形。

连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应的信号。

从严格意义上来讲,MATLAB并不能处理连续信号,在MATLAB中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。

在MATLAB中连续信号可用向量或符号运算功能来表示。

1.向量表示法对于连续时间信号f(t),我们可以用两个行向量f和t来表示,其中向量t是行如t=t1:p:t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为中止时间,p为时间间隔。

向量f为连续信号f(t)在向量t所定义的时间点上的样值。

例如对于连续信号f(t)=sin(t),我们可以用如下两个向量来表示:t=-10:1.5:10;f=sin(t)用上述向量对连续信号表示后,就可以用plot命令来绘出该信号的时域波形。

Plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。

命令如下:plot(t,f)title(‘f(t)=sint’)xlabel(‘t’)axis([-10,10,-1.1,1.1])绘制的信号波形如图3.1所示,当把时间间隔p取得更小(如0.01)时,就可得到sint较好的近似波形,如图3.2所示。

图3.1 p=1.5的sint近似波形图3.2 p=0.01的sint近似波形2.符号运算表示法如果信号可以用一个符号表达式来表示它,则我们可用ezplot命令绘制出信号的波形。

例如对于连续信号f(t)=/2t e ,我们可以用符号表达式表示为:syms tf=sym(‘exp(-t/2)’)f= exp(-t/2)然后用ezplot命令绘制其波形:ezplot(f,[-6, 6])该命令绘制的信号波形如图3.3所示图3.3 指数信号波形利用上面两种表达方式我们可以描述出很多种连续信号,常用的信号有:阶跃信号,门信号,斜线信号,指数信号等等。

接下来我们看看离散时间信号,一般说来,离散时间信号用f(k)表示,其中变量k为整数,代表离散的采样时间点。

f(k)可表示为:f(k)={...f(-2),f(-1),f(0),f(1),f(2)…}↑k=0在MATLAB中,用一个向量f即可表示一个有限长度的序列。

但是,这样的向量并没有包含其对应的时间序号信息。

所以,要完整地表示一个离散信号需要用两个向量。

如序列:f(k)={1,2,-1,3,2,4,-1}↑k=0在MATLAB中应表示为:k=[-3,-2,-1,0,1,2,3]或是k=-3:3;f= [1, 2,-1, 3, 2, 4,-1]在用MATLAB表示离散序列并将其可视化时,我们要注意以下几点:第一,与连续时间信号不同,离散时间信号无法用符号运算来表示;第二,由于在MATLAB中,矩阵的元素个数是有限的,因此,MATLAB无法表示无限序列;第三,在绘制离散信号波形时,要使用专门绘制离散数据的stem命令,而不是plot命令。

如对于上面定义的二向量f和k,可用如下stem命令绘图:stem (k, f),得到对应序列波形图,如图3.4所示。

图3.4 随机序列的波形同样的,单位阶跃序列,正弦序列,离散时间指数序列等的离散信号我们都可以用类似的方法描述并绘制出图形。

信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。

我们就分别介绍连续时间信号和离散时间信号的各种时域变换。

1、连续信号的时域变换如前所述,MATLAB可以有两种方法来表示连续信号。

用这两种方法均可实现连续信号的时域变换,但用符号运算的方法则较为简便。

(1).移位对于连续信号f(t),若有常数t0>0,延时信号f(t-t0)是将原信号沿正t轴方向平移时间t0,而f(t+t0)是将原信号沿负t轴方向移动时间t0。

我们可用下面的命令来实现连续信号的平移及其结果可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量,subs命令则将连续信号中的时间变量t用t-t0替换:y=subs(f,t,t-t0); ezplot(y)(2).反折连续信号的反折,是指将信号以纵坐标为轴反折,即将信号f(t)中的自变量t 换为-t。

实现如下:y=subs(f,t,-t); ezplot(y)(3).尺度变换连续信号的尺度变换,是指将信号的横坐标进行展宽或压缩变换,即将信号f(t)中的自变量t换为at,当a>1时,信号f(at)以原点为基准,沿横轴压缩到原来的1/a;当0<a<1时,就展宽至原来的1/a倍。

实现如下:y=subs(f,t,*t); ezplot(y)(4).倒相连续信号的倒相是指将信号f(t)以横轴为对称轴对折得到-f(t)。

实现如下:y=-f; ezplot(y)对于以上的命令,可在画图命令之后加入坐标轴的调整的命令(即加入axis( )命令),以使画出的图形更清晰、直观。

2、离散时间序列的时域变换与连续信号不同的是,在MATLAB中,离散序列的时域变换不能用符号运算来实现,而必须用向量表示的方法,即在MATLAB中离散序列的变换需表示成两个向量的变换。

1).离散序列反折离散序列的反折,即是将表示离散序列的两向量以零时刻的取值为基准点,以纵轴为对称轴反折,向量的反折可用MATLABA中的fliplr函数来实现,具体实现如下:function [f,k]=lsfz(f1,k1)f=fliplr(f1);k=-fliplr(k1); %调用此函数实现向量f1和k1的反折stem(k,f,’filled’)axis([min(k)-1,max(k)+1,min(f)-0.5,max(f)+0.5])2).离散序列的平移离散序列的平移可看作是将离散序列的时间序号向量平移,而表示对应时间序号点的序列样值不变,当序列向左移动k0个单位时,所以时间序号向量都减小k0个单位,反之则增加k0个单位。

实现如下:function [f,k]=lsyw(ff,kk,k0)k=kk+k0;f=ff;stem(k,f,’filled’)axis([min(k)-1,max(k)+1,min(f)-0.5,max(f)+0.5])3).离散序列的倒相离散序列的倒相可看作是将表示序列样值的向量取反,而对应的时间序号向量不变,得到的离散时间序列。

实现如下:function [f,k]=lsdx(ff,kk)f=-ff;k=kk;stem(k,f,’filled’)axis([min(k)-1,max(k)+1,min(f)-0.5,max(f)+0.5])这些时域变换,我们可以把我们在第一节中描述过的信号带入其中,来看看信号时域变换的结果如何。

除此以外,我们通过时域变换也可以锻炼我们描述信号的能力,一些复杂信号,往往都是一些简单信号经过一系列的时域变换得到。

前面的内容,其实是给以下的学习做的准备,我们在了解如何描述信号以后,接下来就只要把信号带入卷积运算中就可以了。

在MATLAB中,conv( )函数可以帮助我们快速求出两个离散序列的卷积和。

conv函数的调用格式为:f=conv(f1,f2)其中f1为包含序列f1(k)的非零样值点的行向量,f2为包含序列f2(k)的非零样值点的行向量,向量f则返回序列f(k)=f1(k)*f2(k)的所有非零样值点行向量。

在求信号卷积之前,我们先来看看在MATLAB中conv( )这个程序是如何来实现的。

我们可以通过看它的流程图来了解,流程图如图3.5所示:图3.5 conv( )函数流程图由于conv是针对离散时间序列的函数,我们先从离散的信号入手[12]。

1、离散时间信号的卷积我们试举一例来看conv的功能,已知序列f1(k)和f2(k)如下所示:f1(k)=1,(0≤k≤2) f2(k)=k,(0≤k≤3)则调用conv( )函数求上述两序列的卷积和的MATLAB命令为:f1=ones(1,3);f2=0:3;f=conv(f1,f2)运行结果为:f=0 1 3 6 5 3由这个例子可以看出,函数conv( )不需要给定序列f1(k)和f2(k)非零样值点的时间序号,也不返回序列f(k)=f1(k)*f2(k)的非零样值点的时间序号。

因此,要正确地标识出函数conv( )的计算结果向量f,我们还必须构造序列f1(k)、f2(k)及f (k)的对应序号向量。

我们可以看出f(k)的序号向量k是由序列f1(k)和f2(k)的非零样值点的起始序号及他们的时域宽度决定的。

在此,我们自己可以构造一个实用一点的函数dconv( ),该函数实现的功能为:可以在计算出卷积f (k)的同时,还可以绘出序列f1(k)、f2(k)及f (k)在时域内的波形图。

并返回f (k)的非零样值点的对应向量。

程序如下所示:function [f,k]=dconv(f1,f2,k1,k2)%the function of compute f=f1*f2%f: 卷积序列f(k)对应的非零样值向量%k: 序列f(k)的对因序号向量%f1: 序列f1(k)非零样值向量%f2: 序列f2(k)非零样值向量%k1: 序列f1(k)的对应序号向量%k2: 序列f2(k)的对应序号向量f=conv(f1,f2) %计算序列f1与f2的卷积和fk0=k1(1)+k2(1); %计算序列f非零样值的起点位置k3=length(f1)+length(f2)-2; %计算卷积和f的非零样值的宽度k=k0:k0+k3 %确定卷积和f非零样值的序号向量subplot(2,2,1)stem(k1,f1) %在子图1绘序列f1(k)时域波形图title('f1(k)')xlabel('k')ylabel('f1(k)')subplot(2,2,2)stem(k2,f2) %在子图2绘序列f2(k)时波形图title('f2(k)')xlabel('k')ylabel('f2(k)')subplot(2,2,3)stem(k,f); %在子图3绘序列f(k)的波形图title('f1(k)与f2(k)的卷积和f(k)')xlabel('k')ylabel('f(k)')对于下面两个离散序列,我们可以调用dconv( )函数来求离散序列的卷积。

相关文档
最新文档