精华内容
下载资源
问答
  • 循环卷积计算步骤
    千次阅读
    2021-08-16 23:07:35

    在这里插入图片描述
    在这里插入图片描述

    更多相关内容
  • 1.循环卷积原理 2.循环卷积与线性卷积的联系 3.对位相加法计算循环卷积 4.Matlab 实操 4.1源代码 4.2

    目录

    1.循环卷积原理

    2.循环卷积与线性卷积的联系

    3.对位相加法计算循环卷积

    4.Matlab 实操

       4.1源代码

       4.2仿真结果

    循环卷积原理

    设x(n)和h(n)是两个长度分别为N和M的有限长序列,它们的L点循环卷积y(n)定义为:

    y_{c}(n)=x(n)\circledast h(n)=[\sum_{m=0}^{L-1}x\left ( m \right )\times h\left ( \left ( n-m \right ) \right )_{L}]\times R_{L}(n)(1)

    其中

    x((n))_{L}=\sum_{i=-\propto }^{+\propto }x(n+iL)(2) 

    所以h((n-m))L可以看做将序列h(n)以L为周期进行周期延拓得到周期序列h((n)L,再将h((n))L右移m位得到h((n-m))L,即:

    h((n-m))_{L}=\sum_{i=-\propto }^{+\propto }h(n+iL-m)(3)

    RL(n)为矩形窗函数。由公式(3)可进一步得到:

    y_{c}(n)=[\sum_{m=0}^{L-1}x(m)\sum_{i=-\propto }^{+\propto}h(n-m+iL)]R_{L}(n)=[\sum_{i=-\propto}^{+\propto}\sum_{m=0}^{L-1}x(m)h(n-m+iL)]R_{L}(n)](4)

     我们知道有限长线性卷积公式:

    y_{l}(n)=x(n)\ast h(n)=\sum_{m=0}^{L-1}x(m)h(n-m)(5)

    由此我们可以得知(4)式中:

    \sum_{m=0}^{L-1}x(m)h(n-m+iL)=y_{L}(n+iL)(6)

    进而得到:

    y_{c}(n)=[\sum_{i=-\propto }^{+\propto }y_{l}(n+iL)]R_{L}(n)(7)

    我们可以看出公式(7)是循环卷积另一种表示方式,而且它诠释了循环卷积与线性卷积的关系,即线性卷积以yl(n)以L为周期进行周期延拓得到周期序列后求和再乘以L点长度的矩形窗函数得到周期序列的主值序列(第一个周期的序列)。 

    循环卷积与线性卷积的联系

     根据第一部分的公式推导我们已经知道了循环卷积和线性卷积之间的联系,其实它们之间的关系可总结为以下三个要点:

    (1)当L<N+M-1,循环卷积是线性卷积长度为L 的时域混叠,一般要求L>=max(N,M),N+M-1是线性卷积结果新序列的长度。

    (2)当L=N+M-1,循环卷积就是线性卷积。

    (3)当L>N+M-1,循环卷积是线性卷积结果末尾补L-(N+M-1)个零。

     

    对位相加法计算循环卷积

    我们知道图解法是最为普遍的方法来求解线性卷积,当然它对循环卷积也依然适用,此处不予详细说明,本节我们介绍一种新的计算循环卷积的方法叫做对位相加法。基本原理可以概括为先依照对位相乘法计算出线性卷积,然后根据循环区间修正结果,若循环区间L为2,则把2之后的序列搬到前面,两序列相加求和即得最终结果。举个例子,依然使用序列x(n)=[1 2 3]和h(n)=[1 1 1 1],我们知道它的线性卷积结果为[1 3 6 6 5 3],下图介绍不同点数的循环卷积对位相加法如何操作:

    我们看到2点循环卷积的结果为[12 12],以4点为循环区间:

    依次类推,我们知道以6点为循环区间时截余线就在元素3之后,由此我们知道[1 3 6 6 5 3]就是循环卷积的结果,以8点为循环区间:

    我们可以看到此时只有N位保留序列,并无截余序列。此时需要在N位线性卷积序列后补上L-N个零。 上述结果都可以在Matlab里面使用cconv函数验证正确性。

    Matlab 实操

    源代码

    %% =========================================================================================================
    % 程序说明:本程序在依照对位相乘法而自定义线性卷积函数的基础上依据循环卷积的原理和对位相加法自定义循环卷积函数,替代Matlab自带cconv函数和y=ifft(fft(x).*fft(h)),供大家参考
    % 程序名称:Cicular Convolution 循环或圆周卷积
    % 作者: hill5678
    % 当前版本:1.0
    %% =========================================================================================================
    clear all;
    close all;
    clc;
    %% ==================================================主函数部分==============================================
    X=input('enter a arbitrary discrete-time sequence here:');
    H=input('enter a arbitrary discrete-time sequence here:');
    L=input('enter the desired circular convolution data points here:');
    Y=circular_convolution(X,H,L);
    display(Y);
    %% ================================================定义循环卷积函数============================================
    function y=circular_convolution(x,h,L)
    %L为计算循环卷积的数据点数或者为输出序列的长度
    n=length(x);m=length(h);% 输入离散时间序列的长度
    y1=[];y2=[];y3=[];y4=[];y5=[];y6=[];y7=[];y8=[];y9=[];
    a=m;
    N=n+m-1;% 卷积后新序列的长度
    b=N;
    M=N-n;% 矩阵形成并移位后每行需要补零的个数
    for i1=0:a-2
        for i=0:m-1
            for k=0:n-1
                y1(i+1,k+1)=h(i+1)*x(k+1);% 按照对位相乘法将两个序列左端对齐,依次对位相乘
            end
            y2=y1;% 将结果矩阵赋给y2
        end
        y3=[y2,zeros(m,M)];%将y2后面加入零矩阵
        y4=circshift(y3(i1+2,:),i1+1,2);% 循环移位函数,将y4从第二行开始向右按行移位。第二行移一位,第三行移两位,按此规律依次类推
        y5=[y5;y4];
    end
    y6=[y3(1,:);y5];% y3的第一行不变
    y7=sum(y6);% 将矩阵y6按列相加得到卷积结果
    disp(y7);
    figure(1)
    stem(y7,'fill')
    title('linear convolution result:sequence y7(n)');
    grid on;
    %%此处开始定义循环卷积函数
    y10=[];y11=[];y=[];
    J=ceil(N/L);%对位相加后所形成矩阵的行数
    for i2=L:L:(J-1)*L%矩阵从第2行开始基于第一行元素即线性卷积结果一共做(J-1)*L次向左循环移位
        z=zeros(1,i2);
        y8=circshift(y7,-(i2),2);
        y8(N-i2+1:N)=z;
        y9=[y9;y8];
    end
    y10=[y7(1,:);y9];
    for i3=0:L-1
    %%当L<N,循环卷积是线性卷积长度为L的时域混叠;当L=N,循环卷积就是线性卷积;当L>N,循环卷积是线性卷积末尾补上L-N个零
    if L<N 
        y11=[y11,sum(y10(:,i3+1))];
        y=y11;
    elseif L==N
        y=y7;
    else 
        y=[y7,zeros(1,L-N)];
    end
    end
    disp(y)
    figure(2)
    stem(y,'fill')
    title('circular convolution result:sequence y(n)');
    grid on;
    end

     此代码前一段还是产生线性卷积结果,故在仿真结果里面不再显示。

    仿真结果

     使用序列x=[1 2 3]和h=[1 1 1 1],求4点循环卷积,Matlab命令窗口:

     

    Matlab仿真图:



    参考文献  

    数字信号处理:循环卷积快速计算技巧

     

     

     

     

    展开全文
  • 数字信号处理:循环卷积快速计算技巧

    万次阅读 多人点赞 2021-05-10 16:58:48
    法一:从一个例题出发来看循环卷积的过程,首先我们采用定义循环卷积的公式来求解。我们把公式的计算过程写成矩阵相乘会更加直观。先把要进行循环的序列x2写成矩阵形式(由于循环卷积不满足交换律,注意先后顺序),...

    法一:从一个例题出发来看循环卷积的过程,首先我们采用定义循环卷积的公式来求解。我们把公式的计算过程写成矩阵相乘会更加直观。先把要进行循环的序列x2写成矩阵形式(由于循环卷积不满足交换律,注意先后顺序),把x2以y轴为对称轴翻转,翻转后进行周期延拓。在矩阵的第一行记录下此时0-3点的值。第二行记录下右移1位之后0-3点的值。以此类推,写出整个矩阵,与x1向量相乘,即得结果。计算过程完全符合公式。

    法2:上面的方法计算起来速度不够快,我们可以通过一个简单的方法快速写出x2的矩阵。按列来观察,第一列是1234,第二列把4往前挪到首位,以此类推,写出整个矩阵。考虑8次循环卷积时,只需要注意补上0即可。

    法3:另一种方法是先算出对位相乘相加序列,然后根据循环区间修正结果。若循环区间为4,则把4之后的序列搬移到前面,两序列求和即得最终结果。

    另外,需要注意原始序列有平移的情况。

    展开全文
  • 区分线性卷积、周期卷积、循环卷积及其计算方法

    千次阅读 多人点赞 2021-11-14 20:36:32
    对于数字信号处理初学者来说,线性卷积、周期卷积、循环卷积的各种问法总是令人头疼,下文我将通过简单的例子来区分这三种卷积与对应的计算方法。 一、线性卷积 这是最常见的卷积方式,若被卷积序列x[n]与h[n]的序列...

    对于数字信号处理初学者来说,线性卷积、周期卷积、循环卷积的各种问法总是令人头疼,下文我将通过简单的例子来区分这三种卷积与对应的计算方法。

    一、线性卷积


    这是最常见的卷积方式,若被卷积序列x[n]与h[n]的序列长度分别为M和N,则卷积得到的y[n]序列长为L=M+N-1,计算线性卷积的简单方法为进位保留法。

    请添加图片描述

    二、循环卷积


    循环卷积与周期卷积最大的区别与联系在于循环卷积是取两周期序列主值进行区别于线性卷积的卷积后的结果,而周期卷积则是以此结果为主值进行周期延拓。循环卷积与周期卷积使用的卷积方法相较于线性卷积区别在于卷积结果的序列长度与被卷积序列长度相同,因此要求两被卷积序列的长度一致,长度较短的序列应该补零。计算循环卷积有两种较为简便的方法。

    请添加图片描述

    三、周期卷积

    如循环卷积部分讲述的二者关系,只需先计算出循环卷积,再进行N为周期的周期延拓即可。
    请添加图片描述

    展开全文
  • a=[2 4 6 8 10]; b=[1 2 3 4 5]; n=5;%n=5时的循环褶积 for m=1:n a1=a’; b1=b’;%赋初值 end for j=1:n ...end %建立循环矩阵 ab2=s1*b1 %计算循环褶积 运行结果如下: ab2 = 90 100 100 90 70 ...
  • 信号处理--线性卷积与循环卷积

    万次阅读 多人点赞 2020-12-06 19:52:49
    一、线性卷积 线性卷积(linear convolution)是在时域描述线性系统输入和输出之间关系的一种运算。 1. 背景   对于线性时不变离散时间系统来说,若序列x(n)x(n)x(n)是系统的输入,h(n)h(n)h(n)是系统在单位脉冲...
  • 本资源时基于matlab的GUI界面多种卷积计算和滤波器等,可以实现手动输入,锯齿、正弦等波形选择,也可以由自己...一步一步的演示卷积计算步骤和结果。包括循环卷积、线性卷积、快速卷积。其次含有卡尔曼滤波等功能。
  • 步骤 1:获得序列 x (n) 和 h (h) 的 N 点 DFT: x (n) → X (k) h (n) → H (k) Step-2:将两个序列X(k)和H(k)相乘: Y (k) → X (k) H (k) ,对于 k=0,1,2,...,N-1 Step-3:获得序列Y(k)的N点IDFT,得到最终输出y...
  • 循环卷积与线性卷积

    千次阅读 2020-01-09 20:33:37
    直接计算步骤: 序列A与序列B,长度都是N,新的序列C 1、把B倒过来。[翻转] 2、把B向右平移一个元素。最右侧的元素补到左边。 3、计算此时A和B对应元素的积的和。将其加到C的末尾。 4、如果C中还不足N个元素,...
  • 掌握线性卷积与循环卷积软件实现的方法,理解掌握二者的关系 二、实例分析与计算 实验原理:两个序列的N 点循环卷积定义为)())(()()]()([N n m n x m h n x n h N k NN?∑-=01从定义中可以看出,循环卷积和线性卷积...
  • 线性和循环卷积此示例说明如何建立线性卷积和循环卷积之间的等效关系。线性卷积和循环卷积是...了解线性卷积和循环卷积等效的条件,可让您使用 DFT 来高效地计算线性卷积。包含 N 个点的向量 x 和包含 L 个点的向量...
  • 几种简单卷积计算方法实例-Faltung

    千次阅读 2021-02-26 15:32:32
    1.连续函数的卷积 1.1 将图1中的两个函数的表达式写出 x(t)={1, 0<t<3T0,其他 x(t)= \begin{cases} 1, & \ 0<t<3T\\ 0, &其他 \end{cases} x(t)={1,0,​ 0<t<3T其他​ h(t)={...
  • 实现线性卷积和循环卷积,主要介绍了MATLAB 工具的这部分的使用方法,以及编程
  • 目录 0 前言: 理论知识 1 RNN模型结构 1.1 RNN结构 1.2 具体图 1.3 计算过程​ 1.4 RNN的总括图 2 RNN的反向传播 3 Tensorflow2.0 RNN循环卷积网络 3.1 LSTM 网络 3.1.1 LSTM网络的简单实现 3.1.2 LSTM 网络的...
  • 原创循环卷积代码,转载需注明出处线性卷积与循环卷积的比较实验目的和要求掌握循环卷积和线性卷积的原理,与理论分析结果比较,加深理解循环卷积与线性卷积之间的关系。实验内容和步骤1) 已知两序列X(n) = ; h(n)=...
  • 卷积计算 这个就是普通的卷积计算原理,输入有3个通道,输出有2个通道,没加激活函数等。 如上图所示,输入有3个通道,输出有2个通道,也就是有2个卷积核(一个卷积核就是322)。对于每个卷积核,先在输入3个通道...
  • 以FFT计算线性卷积

    千次阅读 2021-07-16 12:47:32
    clear;clc; xn = sin(0.4*[1:15]); hn = 0.9.^(1:20); %% %线性卷积 yn = conv(xn,hn); figure(1); subplot(3,1,1); stem(1:15,xn);...%循环卷积定理:有限长序列x(n),h(n)做循环卷积的DFT结果等于x(n)
  • 全连接、卷积循环神经网络介绍

    千次阅读 2022-04-19 10:50:04
    CNN还按照固定的计算步骤(比如模型中层的数量)来实现这样的输入输出。这样的神经网络没有持久性 RNN优点: RNN 是包含循环的网络,允许信息的持久化。 在自然语言处理(NLP)领域,RNN已经可以做语音识别、机器翻译...
  • 3、掌握线性卷积与循环卷积软件实现的方法,并验证二者之间的关系。二、实验原理1、线性卷积:线性时不变系统(Linear Time-Invariant System, or L. T. I系统)输入、输出间的关系为:当系统输入序列为,系...
  • 【深度学习】多通道图像卷积过程及计算方式

    万次阅读 多人点赞 2018-10-15 21:42:50
    之前,有写了一篇博文,【深度学习入门】——亲手实现图像卷积操作介绍卷积的相应知识,但那篇文章更多的是以滤波器的角度去讲解卷积。但实际上是神经网络中该博文内容并不适应。 之前的文章为了便于演示,针对的是...
  • 问题:一直不理解一张彩色3通道的图片,经过一个32层的33卷积核后,得到的是32通道...该步骤如下: 首先,每层卷积核分别于输入的各通道进行卷积。 然后,把卷积后的多通道输出进行相加,便得到单通道输出。 最后,剩余
  • 文档介绍:实验3利用FFT计算线性卷积一、实验目的 1.掌握利用FFT计算线性卷积的原理及具体实现方法。 2.加深理解重叠相加法和重叠保留法。 3.考察利用FFT计算线性卷积各种方法的适用范围。二、实验设备与环境 计算机...
  • 傅里叶变换 ~ 利用 DFT 计算线性卷积

    千次阅读 2019-10-19 11:02:54
    文章目录利用 DFT 计算线性卷积1、线性卷积原理2、DFT 计算线性卷积原理3、乘法运算次数比较4、示例 利用 DFT 计算线性卷积 1、线性卷积原理 线性卷积如下: ...利用 DFT 的循环卷积特性,可由 DFT 计...
  • 图解圆周卷积

    万次阅读 多人点赞 2017-09-07 14:32:30
    圆周卷积,也叫循环卷积,两个长度为N的有限场序列x(n)x\left ( n \right )和h(n)h\left ( n \right )的循环卷积定义为 y(n)=[∑N−1m=0x(m)h((n−m))N]RN(n)=xn⨂yny\left ( n \right ) = [\sum_{m = 0}^{N-1}x\...
  • 在音频信号处理中,卷积是很常见的信号处理方式,很明显这种方式需要我们完全知道输入信号$x(t)$才能与$h(t)$计算卷积,实际应用中我们不可能预先获得整个信号,全部输入完之后才开始计算,因为这会造成输出有很大的...
  • 两个序列的N点循环卷积定义为 10[()()]()(())NNNkhnxnhmxnm (0)nN 从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个N点序列的N点循环卷积的结果仍为N点序列,而它们的线性卷积的结果的...
  • DFT计算线性卷积——重叠保留法

    万次阅读 2016-09-25 23:07:45
    它们的线性卷积和循环卷积分别表示如下: yc(n)=h(n)∗x(n)=∑m=0N−1h(m)x(n−m)y_c(n)=h(n)*x(n)=\sum_{m=0}^{N-1}h(m)x(n-m) yl(n)=h(n)Ⓛx(n)=[∑m=0L−1h(m)x((n−m))L]RL(n)y_l(n)=h(n)Ⓛx
  • 移动平均线只需要少量的循环和均值函数即可计算得出,但使用 NumPy 还有更优的选 择—— convolve 函数。简单移动平均线只不过是计算与等权重的指示函数的卷积,当然,也可 以是不等权重的。 卷积是分析数学中一种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,714
精华内容 5,485
热门标签
关键字:

循环卷积计算步骤

友情链接: 8th_clock.rar