MATLAB计算卷积

合集下载

卷积运算的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矩阵卷积Matlab矩阵卷积是一种数学运算,用于将两个矩阵相乘并生成一个新的矩阵。

在Matlab中,矩阵卷积是通过conv函数实现的。

本文将详细介绍Matlab矩阵卷积的定义、原理、应用以及实现方法。

一、定义Matlab矩阵卷积是指将两个输入矩阵进行卷积运算,得到一个输出矩阵的过程。

其中,输入矩阵可以是任意大小和维度,输出矩阵的大小和维度取决于输入矩阵的大小和卷积核的大小。

二、原理Matlab中使用的卷积运算是线性时不变系统(LTI)模型下的离散时间域卷积。

其基本原理是将两个函数进行乘法后再进行积分运算。

在数字图像处理中,我们通常使用离散时间域卷积来表示图像处理操作。

具体而言,在Matlab中进行矩阵卷积时,我们需要先定义一个二维数组作为输入图像,并定义一个二维数组作为滤波器(也称为卷积核)。

接着,我们使用conv函数对这两个数组进行计算,并得到一个新的二维数组作为输出结果。

三、应用Matlab矩阵卷积在数字图像处理中有广泛的应用。

例如,可以使用矩阵卷积进行图像模糊、边缘检测、图像增强等操作。

此外,矩阵卷积还可以用于信号处理、语音识别、自然语言处理等领域。

四、实现方法在Matlab中,我们可以使用conv函数对两个数组进行卷积运算。

具体而言,conv函数的调用格式为:C = conv(A, B, 'shape')其中,A和B分别表示输入的两个数组,'shape'表示输出矩阵的形状(可选参数)。

如果未指定'shape'参数,则默认输出完整的卷积结果。

例如,以下代码演示了如何对两个二维数组进行卷积运算:A = [1 2 3; 4 5 6; 7 8 9];B = [1 0; 0 1];C = conv2(A, B)在上述代码中,我们定义了一个3x3的二维数组A和一个2x2的滤波器B,并使用conv2函数对它们进行了卷积运算。

最终得到了一个4x4的输出结果C。

matlab中的conv函数

matlab中的conv函数

matlab中的conv函数Matlab中的conv函数是一个用于计算两个向量的卷积的内置函数。

它可以在处理数字信号处理、图像处理以及其他一些数学问题时提供便利。

conv函数的语法如下:```C = conv(A, B)C = conv(A, B, shape)```其中,A和B是两个输入向量,C是返回的卷积结果向量。

shape是一个可选参数,用于指定卷积结果的形状。

在Matlab中,卷积是一个重要的数学操作。

卷积可以在数字信号处理中用于滤波、降噪和特征提取等应用。

在图像处理中,卷积可以用于模糊、锐化以及边缘检测等任务。

使用conv函数进行卷积操作非常简单。

我们可以将A和B替换为需要进行卷积的向量,然后通过调用conv函数来计算卷积结果。

例如,下面的代码演示了如何使用conv函数计算两个向量的卷积:```matlabA = [1, 2, 3]B = [4, 5, 6]C = conv(A, B)```在上面的例子中,A和B分别是长度为3的向量,通过conv函数计算它们的卷积结果存储在C中。

在这种情况下,卷积结果C的长度为5,计算公式为C = [4, 13, 28, 27, 18]。

除了计算一维向量的卷积之外,conv函数还可以计算二维向量的卷积。

例如,我们可以使用conv函数对图像进行模糊处理。

下面的示例展示了如何使用conv函数对灰度图像进行均值模糊:```matlabimg = imread('image.jpg');kernel = ones(5) / 25;blurred_img = conv2(double(img), kernel, 'same');blurred_img = uint8(blurred_img);```在上面的例子中,我们首先读取了一张图像,然后定义了一个5x5的均值模糊核kernel。

通过使用conv2函数,我们将图像转换为double类型并将kernel应用于图像上的每个像素。

用matlab计算序列卷积和并绘图

用matlab计算序列卷积和并绘图

(一)实验目的:学会用MATLAB 对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性。

(二)实验原理:1、离散时间序列f1(k)和f2(k)的卷积和定义:f(k)=f1(k)*f2(k)=∑∞-∞=-•i i k f i f )(2)(12、在离散信号与系统分析中有两个与卷积和相关的重要结论:a 、f(k)=∑∞-∞=-•i i k i f )()(δ=f(k)* δ(k)即离散序列可分解为一系列幅度由f(k)决定的单位序列δ(k)及其平移序列之积。

b 、对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状态响应为y(k),则有:y(k)=∑∞-∞=-•i i k h i f )()(3、上机:conv.m 用来实现两个离散序列的线性卷积。

其调用格式是:y=conv(x,h)若x 的长度为N ,h 的长度为M ,则y 的长度L=N+M-1。

(三)实验内容1、题一:令x(n)= {}5,4,3,2,1,h(n)={}246326,,,,,,y(n)=x(n)*h(n),求y(n)。

要求用subplot 和stem 画出x(n),h(n),y(n)与n 的离散序列图形。

源程序: N=5; M=6; L=N+M-1; x=[1,2,3,4,5];h=[6,2,3,6,4,2]; y=conv(x,h); nx=0:N-1; nh=0:M-1; ny=0:L-1;subplot(131); stem(nx,x,'*k'); xlabel('n'); ylabel('x(n)'); grid on ;subplot(132); stem(nh,h,'*k'); xlabel('n'); ylabel('h(n)'); grid on ;subplot(133); stem(ny,y,'*k'); xlabel('n'); ylabel('y(n)'); grid on ; 实验结果:nx (n)nh (n)ny (n )分析实验结果:根据实验结果分析可知,实验所得的数值跟x (n )与y (n )所卷积的结果相同。

用matlab计算序列卷积和并绘图

用matlab计算序列卷积和并绘图

(一)实验目的:学会用MATLAB 对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性。

(二)实验原理:1、离散时间序列f1(k)和f2(k)的卷积和定义:f(k)=f1(k)*f2(k)=∑∞-∞=-•i i k f i f )(2)(12、在离散信号与系统分析中有两个与卷积和相关的重要结论:a 、f(k)=∑∞-∞=-•i i k i f )()(δ=f(k)* δ(k)即离散序列可分解为一系列幅度由f(k)决定的单位序列δ(k)及其平移序列之积。

b 、对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状态响应为y(k),则有:y(k)=∑∞-∞=-•i i k h i f )()(3、上机:conv.m 用来实现两个离散序列的线性卷积。

其调用格式是:y=conv(x,h)若x 的长度为N ,h 的长度为M ,则y 的长度L=N+M-1。

(三)实验内容1、题一:令x(n)= {}5,4,3,2,1,h(n)={}246326,,,,,,y(n)=x(n)*h(n),求y(n)。

要求用subplot 和stem 画出x(n),h(n),y(n)与n 的离散序列图形。

源程序: N=5; M=6; L=N+M-1; x=[1,2,3,4,5];h=[6,2,3,6,4,2]; y=conv(x,h); nx=0:N-1; nh=0:M-1; ny=0:L-1;subplot(131); stem(nx,x,'*k'); xlabel('n'); ylabel('x(n)'); grid on ;subplot(132); stem(nh,h,'*k'); xlabel('n'); ylabel('h(n)'); grid on ;subplot(133); stem(ny,y,'*k'); xlabel('n'); ylabel('y(n)'); grid on ; 实验结果:nx (n)nh (n)ny (n )分析实验结果:根据实验结果分析可知,实验所得的数值跟x (n )与y (n )所卷积的结果相同。

matlab中conv函数用法

matlab中conv函数用法

matlab中conv函数用法conv 函数用于计算一次或多次卷积,它可以让用户很方便地同时计算多个信号和一个滤波器之间的卷积,或者同时计算多个滤波器和一个信号之间的卷积。

1. conv 函数的定义conv 函数是指MATLAB自带的卷积函数,用来计算输入信号和响应函数的卷积,并将结果存储在一个数组中。

通常情况下,conv函数可以被定义为:result = conv(x1, x2)其中,x1和x2是两个输入信号/响应函数的一维数组,result是存储卷积结果的一维数组。

2. 卷积的定义卷积是计算两个信号的乘积的累加,满足以下关系:H(t) = a*∫(x(r)*y(t-r)dr)其中,H(t)是卷积操作的结果,a是一个定值,x(r)和y(t-r)是卷积运算的两个信号。

这里,当t>0时,由于积分的有限性,卷积的结果可用下面的简化形式代替:H(t) = a*∑_(i=0)^nx(i)y(t−i)3. 使用conv函数conv函数支持多种形式的输入,支持计算多个信号和一个滤波器之间的卷积,也可以计算多个滤波器和一个输入信号之间的卷积。

具体用法如下:a. 两个信号之间的卷积:给定两个输入信号(一维数组)x1和x2,计算它们之间的卷积结果,可使用conv函数:result = conv(x1, x2);b. 多个信号和一个滤波器之间的卷积给定若干个输入信号(一维数组)x1、x2、……、xn,以及滤波器h (一维数组),计算多个信号和一个滤波器之间的卷积结果,可使用conv函数:result = conv(x1, x2,…, h);c. 多个滤波器和一个信号之间的卷积给定一个输入信号(一维数组)x1、以及若干个滤波器h1、h2、……、hn,计算多个滤波器和一个信号之间的卷积结果,可使用conv函数:result = conv(h1, h2,……, x1);4. conv函数的效果使用conv函数可以快速准确地计算卷积,传统的计算卷积值的方法在计算起来会比较繁琐,而使用conv函数可以大大减轻这种计算量。

matlab圆周卷积

matlab圆周卷积

matlab圆周卷积圆周卷积是数字信号处理中常见的操作之一,特别是在图像处理中。

MATLAB 提供了circshift和ifft函数来实现圆周卷积。

假设有两个信号x和h,长度分别为N和M。

首先将h翻转,然后向右移动M/2,使得移动后的h的第一个元素位于h的中心位置。

然后将x和移动后的h 进行逐点相乘,在进行M点离散傅里叶变换(DFT)得到Y。

为了得到圆周卷积的结果,需要将Y进行逆DFT,并将得到的结果向右移动M/2个位置。

下面给出MATLAB代码实现:matlabfunction y = cconv(x, h)% Circular convolution of x and hN = length(x);M = length(h);L = max(M, N);h = [h(:); zeros(L-M, 1)]; % zero-paddingx = [x(:); zeros(L-N, 1)]; % zero-paddingH = fft(circshift(h, -floor(M/2)));X = fft(circshift(x, -floor(N/2)));Y = H .* X;y = circshift(ifft(Y), floor(L/2));end调用这个函数:matlabx = [1 2 3 4 5 6 7 8];h = [1 2 1];y = cconv(x, h);结果为:y =1.0000 4.0000 8.0000 12.0000 16.0000 13.0000 9.0000 5.0000其中,y(i)表示x和h的圆周卷积在位置i的值。

值得注意的是,使用MATLAB的conv函数也可以得到相同的结果,因为它默认进行的是线性卷积,但是这样的计算效率比较低,并且对于更大的信号长度可能会导致内存不足。

因此,如果需要进行圆周卷积,使用上述代码实现可以更加高效。

matlab 卷积 傅里叶变换乘积

matlab 卷积 傅里叶变换乘积

Matlab 中的卷积和傅里叶变换乘积一、matlab 中的卷积在 Matlab 中,卷积是一种常见的信号处理操作,它可以用来处理数字信号、图像处理、控制系统等领域。

卷积的定义是指两个函数的积分平均,表示一种平滑的操作。

1.1 一维卷积对于一维信号,可以使用 Matlab 中的 conv 函数进行卷积运算。

假设有两个信号 x 和 h,可以使用以下代码进行卷积运算:```matlaby = conv(x, h);```其中,x 和 h 分别为待卷积的两个信号,y 为卷积结果。

1.2 二维卷积对于二维图像,可以使用 Matlab 中的 conv2 函数进行卷积运算。

假设有两个图像 A 和 B,可以使用以下代码进行卷积运算:```matlabC = conv2(A, B);```其中,A 和 B 分别为待卷积的两个图像,C 为卷积结果。

1.3 卷积的应用卷积在数字信号处理、图像处理、控制系统等领域都有广泛的应用。

在数字信号处理中,卷积可以用于滤波、信号去噪等操作;在图像处理中,卷积可以实现图像模糊、边缘检测等功能;在控制系统中,卷积可以用于系统的传递函数求解等问题。

二、matlab 中的傅里叶变换乘积傅里叶变换乘积是指对两个函数进行傅里叶变换后,将它们相乘再进行逆傅里叶变换的操作。

这在信号处理和通信系统中有着重要的应用。

2.1 一维傅里叶变换乘积在 Matlab 中,可以使用 fft 函数对信号进行傅里叶变换,然后使用ifft 函数对结果进行逆变换。

假设有两个信号 x 和 h,可以使用以下代码进行乘积运算:```matlaby = ifft(fft(x) .* fft(h));```其中,x 和 h 分别为待变换的两个信号,y 为变换乘积结果。

2.2 二维傅里叶变换乘积对于二维图像,可以使用 fft2 函数对图像进行傅里叶变换,然后使用ifft2 函数对结果进行逆变换。

假设有两个图像 A 和 B,可以使用以下代码进行乘积运算:```matlabC = ifft2(fft2(A) .* fft2(B));```其中,A 和 B 分别为待变换的两个图像,C 为变换乘积结果。

用MATLAB实现线性卷积运算北邮

用MATLAB实现线性卷积运算北邮

信息及通信工程学院数字信号处理实验报告实验题目:用MATLAB实现线性卷积运算班级:2019211113姓名:学号:日期:2019年5月索引一、实验原理 (1)1、算法产生背景 (1)2、算法基本思想 (1)1)重叠相加法 (1)2)重叠保留法 (2)二、流程图设计 (3)1、重叠相加法 (3)2、重叠保留法 (3)三、MATLAB源代码 (3)1、重叠相加源码 (3)2、重叠保留源码 (4)四、实验结果与分析 (5)①调用CONV()计算 (5)②测试重叠相加算法 (5)③测试重叠保留算法 (5)五、讨论与总结 (6)1、算法效率分析: (6)A.重叠相加法 (6)B.重叠保留法 (7)C.调用conv() (8)D.综合对比分析 (8)2、故障和问题分析 (9)①分段问题 (9)②运算完整性问题 (9)③算法硬件实现 (10)一、实验原理1、算法产生背景DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。

在形式上,变换两端(时域和频域上)的序列是有限长的。

DFT具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。

对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。

因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。

2、算法基本思想1)重叠相加法重叠相加法是将待过滤的信号分割成长为N的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。

具体算法实现原理如图2所示,建立缓存序列,每次输入N点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。

matlab离散循环卷积

matlab离散循环卷积

matlab离散循环卷积离散循环卷积是信号处理和数字信号处理中的一个重要概念。

在MATLAB中,可以使用内置函数`cconv`来实现离散循环卷积。

这个函数的语法为:matlab.c = cconv(a, b, N)。

其中,`a`和`b`是长度为`N`的向量,表示输入的两个信号;`N`是信号的长度;`c`是长度为`N`的向量,表示输出的卷积结果。

在MATLAB中,离散循环卷积的计算可以使用`cconv`函数,也可以手动编写代码来实现。

一种常见的实现方式是使用循环来计算离散循环卷积的结果。

下面是一个简单的示例代码:matlab.function c = my_cconv(a, b, N)。

c = zeros(1, N);for n = 1:N.for k = 1:N.j = mod(n k, N) + 1;c(n) = c(n) + a(k) b(j);end.end.end.这段代码实现了离散循环卷积的计算过程,首先创建一个长度为`N`的全零向量`c`,然后使用双重循环遍历输入信号`a`和`b`,根据离散循环卷积的定义进行计算,并将结果保存在向量`c`中。

除了使用`cconv`函数和手动编写代码,还可以使用快速傅立叶变换(FFT)来计算离散循环卷积,这种方法通常比直接计算更高效。

MATLAB中提供了`fft`和`ifft`函数来进行快速傅立叶变换和逆变换,可以利用这些函数来实现离散循环卷积的计算。

总之,离散循环卷积在信号处理和数字信号处理中具有重要的应用,MATLAB提供了多种方式来实现离散循环卷积的计算,包括使用`cconv`函数、手动编写计算代码以及利用快速傅立叶变换。

根据具体的应用场景和需求,可以选择合适的方法来实现离散循环卷积。

matlab 多项式相乘和卷积

matlab 多项式相乘和卷积

题目:MATLAB 中的多项式相乘和卷积MATLAB 是一个强大的科学计算软件,它提供了众多的工具和函数,其中包括了多项式相乘和卷积的功能。

本文将从简单到复杂,由浅入深地探讨 MATLAB 中多项式相乘和卷积的实现原理、应用及相关的个人观点和理解。

1. 多项式相乘在 MATLAB 中,多项式可以由多个系数构成,多项式相乘就是将两个多项式的系数相乘,并将结果相加得到新的多项式,这个过程可以用conv 函数来实现。

比如有两个多项式 A 和 B,它们的系数分别为 a 和 b,那么它们的相乘结果可以表示为 C = conv(a, b)。

这个操作在信号处理和滤波等领域经常用到,可以实现信号的频域乘法和时域卷积。

2. 多项式卷积在 MATLAB 中,多项式卷积也是一个常见的操作,它可以通过 conv 函数来实现。

卷积的过程就是将两个多项式进行逐项相乘,然后相加得到新的多项式,其表达式为 C = conv(a, b)。

卷积在信号处理、滤波和系统建模等方面有着重要的应用,可以帮助我们分析信号和系统的特性。

3. MATLAB 中的多项式处理函数除了conv 函数之外,MATLAB 还提供了多项式处理的其他相关函数,比如 polyval、roots 和 polyfit 等,它们分别用于多项式的求值、求根和拟合等操作。

这些函数在科学计算和工程应用中非常有用,可以帮助我们更好地理解和应用多项式的相关知识。

4. 个人观点和理解在使用 MATLAB 进行多项式相乘和卷积的过程中,我发现这些功能非常便利和高效,可以帮助我们快速地实现信号处理和系统建模等任务。

多项式处理函数的丰富性和灵活性也让我对 MATLAB 的科学计算能力有了更深刻的认识,这对于我的科研工作和学习都具有重要意义。

总结通过本文的介绍,我们可以看到在 MATLAB 中实现多项式相乘和卷积非常方便,并且涉及到了信号处理、滤波和系统建模等多个领域。

多项式处理函数的丰富性也为我们的科学计算提供了更多的选择和灵活性。

利用MATLAB实现循环卷积.doc

利用MATLAB实现循环卷积.doc

一、实验目的1.利用MATLAB实现循环卷积。

2.比较循环卷积与线性卷积的区别。

二、实验条件PC机,MATLAB7.0三、实验内容1)循环卷积的定义:两个序列的N点循环卷积定义为:利用MATLAB实现两个序列的循环卷积可以分三个步骤完成:(1)初始化:确定循环点数N,测量输入2个序列的长度。

(2)循环右移函数:将序列x(n)循环右移,一共移N次(N为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V。

(3)相乘:将x(n)移位后组成的矩阵V与第二个序列h(n)对应相乘,即得循环卷积结果。

程序如下:程序一:clear;close all;N=10;x1=[6 15 -6 3 5 7 0 1];x2=[7 1 2 9 4 3 20 6];xn1=length(x1);xxn1=0:xn1-1;xn2=length(x2);xxn2=0:xn2-1;subplot(3,1,1);stem(xxn1,x1);subplot(3,1,2);stem(xxn2,x2);x11=fft(x1,N);x12=fft(x2,N);y11=x11.*x12;y1=ifft(y11,N);subplot(3,1,3);n=0:length(y1)-1;stem(n,y1,'.');title('循环卷积的结果');xlabel('n');ylabel('y1(n)');运行后所得图形如下:观察所得的循环卷积结果发现并没有呈现周期性的序列,因此将程序做下列改变。

程序二:clear;close all;N=40;x1=[6 15 -6 3 5 7 0 1];x2=[7 1 2 9 4 3 20 6];x2=[x2,x2,x2,x2];xn1=length(x1);xxn1=0:xn1-1;xn2=length(x2);xxn2=0:xn2-1;subplot(3,1,1);stem(xxn1,x1);subplot(3,1,2);stem(xxn2,x2);x11=fft(x1,N);x12=fft(x2,N);y11=x11.*x12;y1=ifft(y11,N);subplot(3,1,3);n=0:length(y1)-1;stem(n,y1,'.');title('循环卷积的结果');xlabel('n');ylabel('y1(n)');从图中可以看出循环卷积的结果已经呈循环序列。

matlab实验-卷积

matlab实验-卷积
1.将连续信号f1(t)与f2(t)以时间间隔Δt进 行取样,得到离散序列f1(kΔt)与f2(kΔt);

ห้องสมุดไป่ตู้


2.构造与f1(kΔt)和f2(kΔt)相对应的时间向 量k1和k2(注意,此时时间序号向量k1和k2 的元素不再是整数,而是取样时间间隔Δt 的整数倍的时间间隔点); 3.调用conv( )函数计算卷积积分f(t)的近似 向量f(nΔt); 4.构造f(nΔt)对应的时间向量k。




f=conv(f1,f2); %计算需要序列f1与 f2的卷积和f f=f*p; %将f进行采样 k0=k1(1)+k2(1); %计算序列f非零样 值的起点位置 k3=length(f1)+length(f2)-2; %计算卷积和f 的非零样值的宽度 k=k0:p:k3*p; %确定卷积和f非零 样值的时间向量
subplot(3,1,1) stem(k1,f1) 域波形图 title('f1(k)') xlabel('k') ylabel('f1(k)')
%在子图1绘序列f1(k)时



subplot(3,1,2) stem(k2,f2) 时波形图 title('f2(k)') xlabel('k') ylabel('f2(k)')
%在子图1绘f1(t)时域
%在子图2绘f2(t)时域



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

本科实验报告
实验名称:MATLAB计算卷积
学员:学号:
培养类型:技术类年级: 2008级
专业:电子工程所属学院:电子科学与工程学院指导教员:职称:教授
实验室:实验日期: 2010年12月23日
国防科学技术大学训练部制
实验一 MATLAB 计算卷积
一. 实验目的
通过MATLAB 卷积程序的编写, 学会使用计算机软件编程来处理信号(即信号的采样与计算)并进一步了解信号卷积计算的方法与步骤,以更好地理解信号与系统课程知识理论,加强理论与实践的结合。

二. 实验要求
使用MATLAB 编写主程序和卷积函数,实现两个信号的卷积运算。

要求:
1. 程序必须对任意两个函数信号都适用;
2. 结果必须是至少两个信号的卷积。

三. 实验平台
笔记本电脑 MATLAB 软件平台 四. 实验原理
信号卷积的计算公式为
可通过图形变换的方法来计算两个信号的卷积。

用图解法求解卷积的步骤是:翻转、滑动、相乘、积分。

a. 确定卷积结果的分段时限; b. 确定每段中积分的上下限;
c. 确定每段中积分函数的表达式具体实现如下图
()()()()()c t f t g t f g t d τττ
∞-∞
=*=
-⎰
五. 实验内容
对于信号
计算其卷积 六. 实验分析
(1)根据题目要求输入信号,观察信号和卷积结果的波形表示。

信号f 的波形为
2000007
6
6
02 0 0 other Pair 1: = 15 w here 1010 1010
2010ππτ
τττ-⎧+≤≤=⎨
⎩-+-==⨯=⨯=⨯*
exp()()()()(.)()()
.,,./f t kt t s t s t s t s t g t s t f H z s k M H z s
00.20.40.60.81 1.2x 10
-5
-2
-1.5-1-0.500.511.5
2function f
信号g 的波形为
0.2
0.4
0.6
0.8
1
1.2x 10
-5
-1-0.8-0.6-0.4-0.200.20.40.60.8
1function g
卷积结果的波形为
00.51 1.52 2.5x 10
-5
-300
-250
-200
-150
-100
-50
the result of conv
由图形可知,卷积后结果信号的长度为两输入信号长度之和;且卷积结果(经db 转换)每一点都是两输入信号翻转平移后重叠区域的面积。

说明卷积函数编写正确,卷积结果波形符合理论。

七. 学习心得
通过编写MATLAB 程序计算卷积,使我对信号之间计算卷积的方法和步骤有了更深的理解。

同时这次实验使我对MATLAB 这一数学软件有了进一步的理解,它除了功能强大且语言简单易懂外,尤其适合对信号的处理和计算。

此次实验告诉我们在动手计算解决问题的同时要学会运用功能强大的计算机软件来解决问题并做仿真验证以进一步研究。

八. 程序源码
主程序:%UNTITLED Summary of this function goes here
% Detailed explanation goes here
clear all
% Parameters' definition
Tp=10.e-6; % transmitted pulse width
fc=1.e+7; % carrier frequency
Fs=200.e+6; % sampling frequency
kr=2.e+12; % chirp rate
tr=0:1/Fs:Tp; % discrete time array
%Functions' definition
s=exp(j*2*pi*fc*tr+j*pi*kr*(tr).^2);
f=exp(j*2*pi*fc*(tr-Tp)+j*pi*kr*(tr-Tp).^2)+exp(j*2*pi*fc*(tr-1.5*Tp) +j*pi*kr*(tr-1.5*Tp).^2);
g=conj(s);
% Processing
y=conv_myself(f,g); y=y/max(y); y=20*log10(abs(y));
% plot result
figure(1); plot(tr,f); title('function f');
figure(2); plot(tr,g); title('function g');
tc=0:1/Fs:2*Tp;
figure(3); plot(tc,y);title('the result of conv'); grid;
卷积程序
function w=conv_myself(f,g)
len=length(f)+length(g)-1;
fn=zeros(1,len);
gn=zeros(1,len);
fn(length(g):end)=f;
for m=1:length(g)
g1(m)=g(length(g)-m+1);
end
gn(1:length(g))=g1;
for n=1:len
gn1=circshift(gn,[0,n-1]);
w(n)=sum(fn.*gn1);
end。

相关文档
最新文档