精华内容
下载资源
问答
  • 循环卷积和线性卷积的关系
    千次阅读
    2021-01-19 19:33:29

    循环卷积和线性卷积的关系

    一般信号处理滤波器:时域数据 与 滤波器系数的线性卷积,但卷积的运算量比较大,所以用频域的相乘来替代时域卷积,而频域的相乘等于时域循环卷积,所以要有一个循环卷积和线性卷积转换的过程,

    如下matlab例子

    x = [3 2 1 2 5];
    y = [7 -1 8 5 1];
    N = length(x) + length(y) - 1;
    x1 = [x zeros(1,N - length(x))];
    y1 = [y zeros(1,N - length(y))];
    c1 = ifft(fft(x1).*fft(y1));%频域的padding点乘
    c2 = conv(x,y);%时域的线性卷积
    c3 = ifft(fft(x).*fft(y));
    c4 = cconv(x,y,length(x));
    fprintf("result\n");
    c1
    c2
    c3 
    c4

     

    结果:

    result

    c1 =

       21.0000   11.0000   29.0000   44.0000   54.0000   18.0000   51.0000   27.0000    5.0000


    c2 =

        21    11    29    44    54    18    51    27     5


    c3 =

        39    62    56    49    54


    c4 =

        39    62    56    49    54

     

     

    更多相关内容
  • PAGE 用Matlab验证循环卷积和线性卷积关系的软件设计 与仿真 目 录 TOC \o "1-2" \h \z \t "标题 3,3" 摘 要 1 英文摘要 2 引 言 3 正 文 4 1 MATLAB平台概述 4 1.1 MATLAB软件简述 4 1.2 MATLAB举例应用 5 2 循环...
  • 题目用Matlab验证循环卷积和线性卷积关系的软件设计与仿真生物科学与技术学院2013年级 专业生物医学工程答辩人蔡贝贝 导师王小东延时文字目录研究背景理论知识实验数据与结论132延时符课题背景主要应用第一部分研究...
  • 对于长度分别为 N1 N2 的两个序列 x1(n) x2(n) 圆形卷积变成线性卷积,当补零等于[(N1+N2-1)- max(n1,n2)]
  • 信号处理--线性卷积循环卷积

    万次阅读 多人点赞 2020-12-06 19:52:49
    线性卷积(linear convolution)是在时域描述线性系统输入输出之间关系的一种运算。 1. 背景   对于线性时不变离散时间系统来说,若序列x(n)x(n)x(n)是系统的输入,h(n)h(n)h(n)是系统在单位脉冲作用下的单位...

    一、线性卷积

    线性卷积(linear convolution)是在时域描述线性系统输入和输出之间关系的一种运算。

    1. 应用背景

      对于线性时不变离散时间系统来说,若序列 x ( n ) x(n) x(n)是系统的输入, h ( n ) h(n) h(n)是系统在单位脉冲作用下的单位脉冲响应,由于输入离散时间序列 x ( n ) x(n) x(n)可表示为一系列脉冲的线性组合,根据线性系统的齐次性和可加性, x ( n ) x(n) x(n)作用于系统所引起的零状态响应 y ( n ) y(n) y(n)就是序列 x ( n ) x(n) x(n) h ( n ) h(n) h(n)的卷积和。

    2. 定义式

    y ( n ) = x ( n ) ∗ h ( n ) = ∑ k = − ∞ ∞ x ( k ) h ( n − k ) y(n)=x(n)*h(n)=\sum_{k=-∞}^{∞}x(k)h(n-k) y(n)=x(n)h(n)=k=x(k)h(nk)

    上式在运算过程中存在序列的翻转、移位、相乘和相加,所以称为卷积和

    3. 计算方法

    3.1 定义式

    3.2 作图法

    • 步骤:

    (1)将序列 x ( n ) x(n) x(n) h ( n ) h(n) h(n)的自变量用 k k k代换,然后将序列 h ( k ) h(k) h(k)以纵坐标为轴线反转,成为 h ( − k ) h(-k) h(k)
    (2)序列 h ( − k ) h(-k) h(k)沿 k k k轴正方向平移 n n n个单位,成为 h ( n − k ) h(n-k) h(nk)
    (3)求乘积 x ( k ) h ( n − k ) x(k)h(n-k) x(k)h(nk)
    (4)按定义式求各乘积之和。

    3.3 列表法

    y ( n ) = x ( n ) ∗ h ( n ) = ∑ k = − ∞ ∞ x ( k ) h ( n − k ) y(n)=x(n)*h(n)=\sum_{k=-∞}^{∞}x(k)h(n-k) y(n)=x(n)h(n)=k=x(k)h(nk)可见,求和符号内 x ( k ) x(k) x(k)的序号 k k k h ( n − k ) h(n-k) h(nk)的序号 n − k n-k nk之和`恰好等于 k k k

    求卷积和
    沿斜线上各数值之和就是卷积和。


    二、循环卷积

    1. 序列的循环移位

    x ( n ) x(n) x(n)为有限长序列,长度为M,M≤N,则 x ( n ) x(n) x(n)的循环移位定义为:
    y ( n ) = x ( ( n + m ) ) N R N ( n ) y(n)=x\big((n+m)\big)_N R_N(n) y(n)=x((n+m))NRN(n)
    该式表明,将 x ( n ) x(n) x(n)以N为周期进行周期延拓得到 x ~ ( n ) = x ( ( n ) ) N \tilde{x}(n)=x\big((n)\big)_N x~(n)=x((n))N,再将 x ~ ( n ) \tilde{x}(n) x~(n)左移m得到 x ~ ( n + m ) = x ( ( n + m ) ) N \tilde{x}(n+m)=x\big((n+m)\big)_N x~(n+m)=x((n+m))N,最后取 x ~ ( n + m ) \tilde{x}(n+m) x~(n+m)的主值序列则得到有限长序列 x ( n ) x(n) x(n)的循环移位序列 y ( n ) y(n) y(n) y ( n ) y(n) y(n)是长度为N的有限长序列。

    clear all;
    close all;
    clc;
    %%%%%%%%%%%%%%% x(n)及其循环移位过程 %%%%%%%%%%%%%
    M=24;
    xn=triang(6);
    n=-M/3:2*M/3-1;
    x=zeros(1,M);
    for l=1:6
        x(8+l)=xn(l);
    end
    subplot(4,2,1);
    stem(n,x,'.'); axis([-8,16,0,1]); title('(a) x(n)');
    b=[xn' 0 0];
    y8=[b,b,b];
    subplot(4,2,3);
    stem(n,y8,'.'); axis([-8,16,0,1]); title('(b) x((n))_8')
    y8=[y8 b];
    for l=1:M'
        ym(l)=y8(l+2);
    end
    subplot(4,2,5);
    stem(n,ym,'.'); axis([-8,16,0,1]); title('(c) x((n+2))_8');
    for l=9:16
        x(l)=ym(l);
    end
    subplot(4,2,7);
    stem(n,x,'.'); axis([-8,16,0,1]); xlabel('n'); title('(d) x((n+2))_8R_8(n)');
    

    在这里插入图片描述

    2. 循环卷积的定义

    设序列 h ( n ) h(n) h(n) x ( n ) x(n) x(n)的长度分别为N和M, h ( n ) h(n) h(n) x ( n ) x(n) x(n)的L点循环卷积定义为:
    y c ( n ) = [ ∑ m = 0 L − 1 h ( m ) x ( ( n − m ) ) L ] R L ( n ) y_c(n)=\Big[\sum_{m=0}^{L-1}h(m)x\big((n-m)\big)_L\Big]R_L(n) yc(n)=[m=0L1h(m)x((nm))L]RL(n)
    式中,L称为循环卷积区间长度, L ≥ m a x [ N , M ] L≥max[N,M] Lmax[N,M] x ( ( n − m ) ) L x\big((n-m)\big)_L x((nm))L是以L为周期的周期信号,n和m的变化区间均是 [ 0 , L − 1 ] [0,L-1] [0L1]
    因此直接计算该式比较麻烦,计算机中采用矩阵相乘或FFT的方法计算循环卷积。

    3. 用矩阵计算循环卷积的公式

      当 n = 0 , 1 , 2 , ⋯   , L − 1 n=0,1,2,\cdots,L-1 n=0,1,2,,L1时,由 x ( n ) x(n) x(n)形成的序列为 { x ( 0 ) , x ( 1 ) , x ( 2 ) , ⋯   , x ( L − 1 ) } \{x(0),x(1),x(2),\cdots,x(L-1)\} {x(0),x(1),x(2),,x(L1)}

      令 n = 0 , m = 0 , 1 , 2 , ⋯   , L − 1 n=0,m=0,1,2,\cdots,L-1 n=0,m=0,1,2,,L1 x ( ( n − m ) ) L x\big((n-m)\big)_L x((nm))L形成的序列为:
    { x ( ( 0 ) ) L , x ( ( − 1 ) ) L , x ( ( − 2 ) ) L , ⋯   , x ( ( − L + 1 ) ) L } = { x ( 0 ) , x ( L − 1 ) , x ( L − 2 ) , ⋯   , x ( 1 ) } \begin{aligned} &\{x((0))_L,x((-1))_L,x((-2))_L,\cdots,x((-L+1))_L\}\\ &=\{x(0),x(L-1),x(L-2),\cdots,x(1)\} \end{aligned} {x((0))L,x((1))L,x((2))L,,x((L+1))L}={x(0),x(L1),x(L2),,x(1)}
    与序列 x ( n ) x(n) x(n)进行对比,相当于将第一个序列值 x ( 0 ) x(0) x(0)保持不变,将后面的序列 { x ( 1 ) , x ( 2 ) , ⋯   , x ( L − 1 ) } \{x(1),x(2),\cdots,x(L-1)\} {x(1),x(2),,x(L1)}反转180°再放到 x ( 0 ) x(0) x(0)的后面。这样形成的序列称为 x ( n ) x(n) x(n)循环倒相序列

      令 n = 1 , m = 0 , 1 , 2 , ⋯   , L − 1 n=1,m=0,1,2,\cdots,L-1 n=1,m=0,1,2,,L1 x ( ( n − m ) ) L x\big((n-m)\big)_L x((nm))L形成的序列为:
    { x ( ( 1 ) ) L , x ( ( 0 ) ) L , x ( ( − 1 ) ) L , ⋯   , x ( ( − L + 2 ) ) L } = { x ( 1 ) , x ( 0 ) , x ( L − 1 ) , ⋯   , x ( 2 ) } \begin{aligned} &\{x((1))_L,x((0))_L,x((-1))_L,\cdots,x((-L+2))_L\}\\ &=\{x(1),x(0),x(L-1),\cdots,x(2)\} \end{aligned} {x((1))L,x((0))L,x((1))L,,x((L+2))L}={x(1),x(0),x(L1),,x(2)}
    观察上式等号右端序列,它相当于 x ( n ) x(n) x(n)的循环倒相序列向右循环移一位,即向右移1位,移出区间 [ 0 , L − 1 ] [0,L-1] [0L1]的序列值再从左边移进。

    依次类推,当 n 和 m 均从 0 变化到 L-1 时,得到一个关于 x ( ( n − m ) ) L x((n-m))_L x((nm))L的矩阵:
    [ x ( 0 ) x ( L − 1 ) x ( L − 2 ) ⋯ x ( 1 ) x ( 1 ) x ( 0 ) x ( L − 1 ) ⋯ x ( 2 ) x ( 2 ) x ( 1 ) x ( 0 ) ⋯ x ( 3 ) ⋮ ⋮ ⋮ ⋮ ⋮ x ( L − 1 ) x ( L − 2 ) x ( L − 3 ) ⋯ x ( 0 ) ] \begin{bmatrix} x(0) & x(L-1) & x(L-2)& \cdots& x(1)\\ x(1)& x(0) & x(L-1) & \cdots & x(2)\\ x(2)&x(1)& x(0) & \cdots & x(3)\\ \vdots& \vdots &\vdots &\vdots& \vdots \\ x(L-1)&x(L-2)& x(L-3)& \cdots & x(0)\\ \end{bmatrix} x(0)x(1)x(2)x(L1)x(L1)x(0)x(1)x(L2)x(L2)x(L1)x(0)x(L3)x(1)x(2)x(3)x(0)
    上面矩阵称为x(n)的L点“循环卷积矩阵”,其特点是:

    1. 第一行是序列 { x ( 0 ) , x ( 1 ) , x ( 2 ) , ⋯   , x ( L − 1 ) } \{x(0),x(1),x(2),\cdots,x(L-1)\} {x(0),x(1),x(2),,x(L1)}的循环倒相序列。注意,如果 x ( n ) x(n) x(n)的长度M<L,则需要在 x ( n ) x(n) x(n)末尾补 L-M 个零后,再形成第一行的循环倒相序列;
    2. 第一行以后的各行均是前一行向右循环移1位形成的;
    3. 矩阵的各主对角线上的序列值均相等。

    有了循环卷积矩阵,就可以写出计算循环卷积的矩阵形式:

    [ y c ( 0 ) y c ( 1 ) y c ( 2 ) ⋮ y c ( L − 1 ) ] = [ x ( 0 ) x ( L − 1 ) x ( L − 2 ) ⋯ x ( 1 ) x ( 1 ) x ( 0 ) x ( L − 1 ) ⋯ x ( 2 ) x ( 2 ) x ( 1 ) x ( 0 ) ⋯ x ( 3 ) ⋮ ⋮ ⋮ ⋮ ⋮ x ( L − 1 ) x ( L − 2 ) x ( L − 3 ) ⋯ x ( 0 ) ] [ h ( 0 ) h ( 1 ) h ( 2 ) ⋮ h ( L − 1 ) ] \begin{bmatrix} y_c(0)\\ y_c(1)\\ y_c(2)\\ \vdots\\ y_c(L-1)\\ \end{bmatrix} =\begin{bmatrix} x(0) & x(L-1) & x(L-2)& \cdots& x(1)\\ x(1)& x(0) & x(L-1) & \cdots & x(2)\\ x(2)&x(1)& x(0) & \cdots & x(3)\\ \vdots& \vdots &\vdots &\vdots& \vdots \\ x(L-1)&x(L-2)& x(L-3)& \cdots & x(0)\\ \end{bmatrix} \begin{bmatrix} h(0)\\ h(1)\\ h(2)\\ \vdots\\ h(L-1)\\ \end{bmatrix} yc(0)yc(1)yc(2)yc(L1)=x(0)x(1)x(2)x(L1)x(L1)x(0)x(1)x(L2)x(L2)x(L1)x(0)x(L3)x(1)x(2)x(3)x(0)h(0)h(1)h(2)h(L1)

    上式中如果 h ( n ) h(n) h(n)的长度N<L,则需要在 h ( n ) h(n) h(n)末尾补上 L-N 个零。

    三、线性卷积和循环卷积之间的关系

    • 假设 h ( n ) h(n) h(n) x ( n ) x(n) x(n)都是有限长序列,长度分别为N和M。它们的线性卷积和循环卷积分别表示为:
      y l ( n ) = h ( n ) ∗ x ( n ) = ∑ m = 0 N − 1 h ( m ) x ( n − m ) y_l(n)=h(n)*x(n)=\sum_{m=0}^{N-1}h(m)x(n-m) yl(n)=h(n)x(n)=m=0N1h(m)x(nm)
      y c ( n ) = [ ∑ m = 0 L − 1 h ( m ) x ( ( n − m ) ) L ] R L ( n ) y_c(n)=\Big[\sum_{m=0}^{L-1}h(m)x\big((n-m)\big)_L\Big]R_L(n) yc(n)=[m=0L1h(m)x((nm))L]RL(n)
      其中, L ≥ m a x [ N , M ] L≥max[N,M] Lmax[N,M] x ( ( n ) ) L = ∑ i = − ∞ ∞ x ( n + i L ) x((n))_L=\sum_{i=-∞}^{∞}x(n+iL) x((n))L=i=x(n+iL)
      所以 y c ( n ) = [ ∑ m = 0 N − 1 h ( m ) ∑ i = − ∞ ∞ x ( n − m + i L ) ] R L ( n ) = [ ∑ i = − ∞ ∞ ∑ m = 0 N − 1 h ( m ) x ( n + i L − m ) ] R L ( n ) \begin{aligned} y_c(n)&=\Big[\sum_{m=0}^{N-1}h(m)\sum_{i=-∞}^{∞}x(n-m+iL)\Big]R_L(n)\\ &=\Big[\sum_{i=-∞}^{∞}\sum_{m=0}^{N-1}h(m)x(n+iL-m)\Big]R_L(n) \end{aligned} yc(n)=[m=0N1h(m)i=x(nm+iL)]RL(n)=[i=m=0N1h(m)x(n+iLm)]RL(n)
      y l ( n ) y_l(n) yl(n)式对照可以看出
      ∑ m = 0 N − 1 h ( m ) x ( n + i L − m ) = y l ( n + i L ) \sum_{m=0}^{N-1}h(m)x(n+iL-m)=y_l(n+iL) m=0N1h(m)x(n+iLm)=yl(n+iL)
      y c ( n ) = [ ∑ i = − ∞ ∞ y l ( n + i L ) ] R L ( n ) y_c(n)=\Big[\sum_{i=-∞}^{∞}y_l(n+iL)\Big]R_L(n) yc(n)=[i=yl(n+iL)]RL(n)
      也就是说, y c ( n ) y_c(n) yc(n)等于 y l ( n ) y_l(n) yl(n)以L为周期的周期延拓序列的主值序列。

    • 线性卷积与循环卷积相等的条件

    • y l ( n ) y_l(n) yl(n)的长度为N+M-1,因此只有当循环卷积长度L≥N+M-1时, y l ( n ) y_l(n) yl(n)以L为周期进行周期延拓时才无时域混叠现象,此时取其主值序列显然满足 y c ( n ) = y l ( n ) y_c(n)=y_l(n) yc(n)=yl(n)

    • 由此说明了循环卷积等于线性卷积的条件是L≥N+M-1

    clear all;
    close all;
    clc;
    %%%%%%%%%%%%%%% 验证线性卷积与循环卷积直接的关系 %%%%%%%%%%%%%
    xn=ones(1,5);                 % 设置x(n)=R5(n)
    hn=ones(1,4);                 % 设置h(n)=R4(n)
    Lx=length(xn);
    Lh=length(hn);
    
    nh=0:Lh-1;                  
    subplot(3,2,1); 
    stem(nh,hn,'.'); axis([0,10,0,1.5]);ylabel('h(n)');xlabel('n');title('(a) h(n)波形');
    
    nx=0:Lx-1;
    subplot(3,2,3);
    stem(nx,xn,'.');axis([0,10,0,1.5]);ylabel('x(n)');xlabel('n');title('(b) x(n)波形');
    % 调用conv计算线性卷积
    yn=conv(hn,xn);
    L=length(yn);
    ny=0:L-1;
    subplot(3,2,5);
    stem(ny,yn,'.');axis([0,10,0,5]);ylabel('y_l(n)');xlabel('n');title('(c) y_l(n)=h(n)*x(n)');
    % 循环卷积等于线性卷积的条件:循环卷积区间长度L>=M+N-1
    % L=6,用DFT计算序列循环卷积
    L1=6;
    Xk=fft(xn,L1);                    % L1点FFT[x(n)]
    Hk=fft(hn,L1);                    % L1点FFT[h(n)]
    Yck=Xk.*Hk;                       % 频域相乘得Yc(k)
    ycln=ifft(Yck,L1);                % L1点IFFT得到6点循环卷积结果yc(n)
    nycl=0:L1-1;
    subplot(3,2,2);
    stem(nycl,ycln,'.');axis([0,10,0,5]);ylabel('y_c(n)');xlabel('n');title('(d) 6点循环卷积');
    %L=8,用DFT计算序列循环卷积=线性卷积
    L2=8;
    Xk=fft(xn,L2);                      % L2点FFT[x(n)]
    Hk=fft(hn,L2);                      % L2点FFT[h(n)]
    Yck=Xk.*Hk;                         % 频域相乘得Yc(k)
    yc2n=ifft(Yck,L2);                  % L2点IFFT得到8点循环卷积结果yc(n)
    nyc2=0:L2-1;
    subplot(3,2,4);
    stem(nyc2,yc2n,'.');axis([0,10,0,5]);ylabel('y_c(n)');xlabel('n');title('(e) 8点循环卷积');
    %L=10,用DFT计算序列线性卷积
    L3=10;
    Xk=fft(xn,L3);                      % L3点FFT[x(n)]
    Hk=fft(hn,L3);                      % L3点FFT[h(n)]
    Yck=Xk.*Hk;                         % 频域相乘得Yc(k)
    yc3n=ifft(Yck,L3);                  % L2点IFFT得到10点循环卷积结果yc(n)
    nyc3=0:L3-1;
    subplot(3,2,6);
    stem(nyc3,yc3n,'.');axis([0,10,0,5]);ylabel('y_c(n)');xlabel('n');title('(f) 10点循环卷积');
    

    在这里插入图片描述

    四、用DFT计算循环卷积

    h ( n ) h(n) h(n) x ( n ) x(n) x(n)的长度分别为N和M,其L点循环卷积为
    y c ( n ) = [ ∑ m = 0 L − 1 h ( m ) x ( ( n − m ) ) L ] R L ( n ) y_c(n)=\Big[\sum_{m=0}^{L-1}h(m)x\big((n-m)\big)_L\Big]R_L(n) yc(n)=[m=0L1h(m)x((nm))L]RL(n)

    { H ( k ) = D F T [ h ( n ) ] L X ( k ) = D F T [ x ( n ) ] L 0 ≤ k ≤ L − 1 , L ≥ m a x [ N , M ] \begin{cases} H(k)=DFT[h(n)]_L\\ X(k)=DFT[x(n)]_L \end{cases}\qquad 0\leq k \leq L-1,L≥max[N,M] {H(k)=DFT[h(n)]LX(k)=DFT[x(n)]L0kL1Lmax[N,M]
    则由DFT的时域循环卷积定理有
    Y c ( k ) = D F T [ y c ( n ) ] L = H ( k ) X ( k ) 0 ≤ k ≤ L − 1 Y_c(k)=DFT[y_c(n)]_L=H(k)X(k) \qquad 0\leq k \leq L-1 Yc(k)=DFT[yc(n)]L=H(k)X(k)0kL1
    由此可见,循环卷积既可以在时域直接计算,也可以按照下面的计算框图在频域计算。
    由于DFT有快速算法,当L很大时,在频域计算循环卷积的速度快得多,因而常用DFT(FFT)计算循环卷积。
    循环卷积
    DFT只能直接用来计算循环卷积,然而在实际应用中,为了分析时域离散线性时不变系统或者对序列进行滤波处理等,需要计算两个序列的线性卷积。与计算循环卷积一样,为了提高运算速度,也希望用DFT(FFT)计算线性卷积。

    五、用DFT计算线性卷积

    取L≥N+M-1,则可按照上述框图用DFT(FFT)计算线性卷积。

    六、MATLAB实现

    1. 利用MATLAB的conv()函数计算线性卷积

    % x1的长度N=5,x2的长度M=3,那么x1与x2线性卷积的输出序列长度L=N+M-1=7
    % 可以验证,输出结果与我们使用列表法得到的结果一致
    x1=[1,1,3,4,2];
    x2=[1,3,2];
    y=conv(x1,x2);
    

    线性卷积

    2. 利用矩阵相乘原理计算循环卷积

    function [y] = circle_convolution(x1,x2,L)
    % circle_convolution 函数用于计算两个有限长序列的L点循环卷积
    % x1: 长度为N的有限长序列
    % x2: 长度为M的有限长序列
    % L:  循环卷积的长度
    % y:  x1与x2的L点循环卷积结果,L≥max(N,M);
    
    %********** 构造L点循环卷积矩阵 **********%
    N=length(x1);
    M=length(x2);
    
    x_1=[x1 ,zeros(1,L-N)] ;
    x_2=[x2 ,zeros(1,L-M)] ;
    x=zeros(L,L);
    h=circshift ( fliplr (x_1) ,1);  % 得到x1(n)的循环倒相序列
    for i=0:L-1
        x(i+1,:)= circshift(h,i);    % x即为L点循环卷积矩阵
    end
    %********** 矩阵相乘计算循环卷积 **********%
    x_2=x_2';     % 将补零后的x2转置为列向量
    y=x*x_2;      % 矩阵相乘
    end
    
    % 调用circle_convolution函数计算循环卷积
    x1=[1,1,3,4,2];
    x2=[1,3,2];
    L=7;
    y=circle_convolution(x1,x2,L);
    

    结果
    当L=9时,结果为:
    在这里插入图片描述
    当L=5时,结果为:
    在这里插入图片描述
    这里也进一步验证了线性卷积和循环卷积的关系:
    (1) 当L<N+M-1时,循环卷积是线性卷积长度为L的混叠;
    (2) 当L=N+M-1时,循环卷积=线性卷积;
    (3) 当L>N+M-1时,循环卷积是线性卷积末尾补L-(N+M-1)个零;

    3. 调用fft()函数计算循环卷积与线性卷积

    % 5点DFT
    x1=[1,1,3,4,2];
    x2=[1,3,2];
    
    X1=fft(x1,5);
    X2=fft(x2,5);
    Y=X1.*X2;
    y=ifft(Y);
    

    5点循环卷积

    % 7点DFT
    x1=[1,1,3,4,2];
    x2=[1,3,2];
    
    X1=fft(x1,7);
    X2=fft(x2,7);
    Y=X1.*X2;
    y=ifft(Y);
    

    在这里插入图片描述

    % 9点DFT
    x1=[1,1,3,4,2];
    x2=[1,3,2];
    
    X1=fft(x1,9);
    X2=fft(x2,9);
    Y=X1.*X2;
    y=ifft(Y);
    

    在这里插入图片描述

    展开全文
  • 线性卷积和循环卷积关系2. 三者之间的关系参考 前言 本文首先介绍了卷积的物理意义及卷积的性质(交换律、结合律、分配率),并简单阐述了线性时不变系统;之后分别就定义、适用范围及计算方法对线性卷积循环...


    前言

    本文首先介绍了卷积的物理意义及卷积的性质(交换律、结合律、分配律),并简单阐述了线性时不变系统;之后分别就定义、适用范围及计算方法对线性卷积、循环卷积、周期卷积进行了介绍;最后总结了线性卷积、循环卷积、周期卷积之间的关系


    一、卷积的物理意义及性质

    1. 物理意义

    卷积物理意义:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加

    对于线性时不变系统,如果知道该系统的单位响应,那么将单位响应和输入信号求卷积,就相当于把输入信号的各个时间点的单位响应加权叠加,就直接得到了输出信号。

    线性时不变系统:既满足叠加原理又具有时不变特性
    1)叠加定理 f ( a + b ) = f ( a ) + f ( b ) f(a+b) = f(a) + f(b) f(a+b)=f(a)+f(b)
    2)时不变特性:特定输入的输出结果不会随时间变化。

    2. 卷积性质

    卷积积分满足交换律、结合律以及分配律:
    1)交换律 f ( t ) ∗ g ( t ) = g ( t ) ∗ f ( t ) f(t)∗g(t)=g(t)∗f(t) f(t)g(t)=g(t)f(t);
    2)结合律 f ( t ) ∗ g ( t ) ∗ h ( t ) = f ( t ) ∗ ( g ( t ) ∗ h ( t ) ) f(t)∗g(t)∗h(t)=f(t)∗(g(t)∗h(t)) f(t)g(t)h(t)=f(t)(g(t)h(t));
    3)分配律 f ( t ) ∗ ( g ( t ) + h ( t ) ) = f ( t ) ∗ g ( t ) + f ( t ) ∗ h ( t ) f(t)∗(g(t)+h(t))=f(t)∗g(t)+f(t)∗h(t) f(t)(g(t)+h(t))=f(t)g(t)+f(t)h(t);


    二、线性卷积定义及计算方法

    1. 定义公式

    y ( n ) = x ( n ) ∗ h ( n ) = ∑ x ( k ) h ( n − k ) y(n)=x(n)∗h(n)= ∑x(k)h(n−k) y(n)=x(n)h(n)=x(k)h(nk)

    线性时不变离散系统中,若序列 x ( n ) x(n) x(n)是系统的输入信号 h ( n ) h(n) h(n)是系统在单位脉冲作用下的单位脉冲响应,由于输入离散时间序列 x ( n ) x(n) x(n)可表示为一系列脉冲的线性组合,根据线性系统的齐次性可加性 x ( n ) x(n) x(n)作用于系统所引起的零状态响应 y ( n ) y(n) y(n)就是序列 x ( n ) x(n) x(n) h ( n ) h(n) h(n)的卷积和。

    2. 适用范围

    线性卷积表示一个信号通过一个系统的输出,这个信号可以是无限长的,也可以是有限长的,可以的离散的也可以是连续的。

    3. 计算方法

    被卷积序列 x [ n ] x[n] x[n] h [ n ] h[n] h[n]的序列长度分别为 M M M N N N,则卷积得到的 y [ n ] y[n] y[n]序列长为 L = M + N − 1 L=M+N-1 L=M+N1,计算线性卷积的简单方法为进位保留法

    在这里插入图片描述
    C语言实现代码:

    /*****************************************************************
    *	线性卷积函数
    *****************************************************************/
    
    void convolution(double input1[], double input2[], double output[], int n, int m)
    {
        int k = 0;
    	int i = 0;
        int j = 0;
    
    	for (k = 0; k < m + n - 1; k++) 
    	{
    		output[k] = 0;
    	}
    
    	//开始卷积
    	//利用时延效果,记录所有乘积后,时间位置一样的相加
    	for (i = 0; i < m; i++) 
    	{
    		for (j = 0; j < n; j++) 
    		{
    			output[i + j] += input1[i] * input2[j];
    		}
    	}
    }
    

    三、循环卷积定义及计算方法

    1. 定义公式

    设序列 h ( n ) h(n) h(n) x ( n ) x(n) x(n)的长度分别为 N N N M M M h ( n ) h(n) h(n) x ( n ) x(n) x(n) L L L点循环卷积定义为:
    在这里插入图片描述
    式中, L L L称为循环卷积区间长度, L ≥ m a x [ N , M ] L≥max[N,M] Lmax[N,M] x ( ( n − m ) ) L x\big((n-m)\big)_L x((nm))L是以 L L L为周期的周期信号, n n n m m m的变化区间均是 [ 0 , L − 1 ] [0,L-1] [0L1]

    2. 适用范围

    循环卷积(圆周卷积)针对离散信号,是一个有限长序列通过一个系统后的输出序列,在计算这个序列之前,必须先定义卷积运算的点数,不然这个运算就无法确定。

    3. 计算方法

    循环卷积相较于线性卷积区别在于卷积结果的序列长度与被卷积序列长度(输入信号)相同。由上面公式可知,直接计算比较复杂,通常采用线性卷积、矩阵相乘或FFT的方法计算循环卷积

    1)利用线性卷积计算循环卷积
    在这里插入图片描述
    2)利用循环卷积矩阵计算循环卷积
    在这里插入图片描述
    L = m a x ( M , N ) L = max(M,N) L=max(M,N),则 x ( n ) x(n) x(n) L L L点“循环卷积矩阵”,其特点是:

    ① 第一行是序列 { x ( 0 ) , x ( 1 ) , x ( 2 ) , ⋯ , x ( L − 1 ) x(0),x(1),x(2),⋯,x(L−1) x(0),x(1),x(2),,x(L1)} 的循环倒相序列。
    注:如果 x ( n ) x(n) x(n)的长度 M < L M<L M<L,则需要在 x ( n ) x(n) x(n)末尾补 L-M 个零后,再形成第一行的循环倒相序列;
    ② 第一行以后的各行均是前一行向右循环移1位形成的;
    ③ 矩阵的各主对角线上的序列值均相等。

    3)利用FFT计算循环卷积
    在这里插入图片描述
    ① 4点DFT

    x1=[1,2,3,4];
    x2=[1,2,3];
    
    X1=fft(x1,4);
    X2=fft(x2,4);
    Y=X1.*X2;
    y=ifft(Y);
    

    在这里插入图片描述
    ② 6点DFT

    x1=[1,2,3,4];
    x2=[1,2,3];
    
    X1=fft(x1,6);
    X2=fft(x2,6);
    Y=X1.*X2;
    y=ifft(Y);
    

    在这里插入图片描述


    四、周期卷积定义及适用范围

    1. 定义公式

    在这里插入图片描述

    2. 适用范围

    周期卷积针对离散信号,是无限长周期离散信号通过一个离散系统后的输出。


    总结

    设卷积序列 x [ n ] x[n] x[n] h [ n ] h[n] h[n]的序列长度分别为 M M M N N N,则卷积得到的 y [ n ] y[n] y[n]序列长为 L L L

    1. 线性卷积和循环卷积的关系

    1)当L<N+M-1时,循环卷积是线性卷积长度为L的混叠;
    2)当L=N+M-1时,循环卷积=线性卷积;
    3)当L>N+M-1时,循环卷积是线性卷积末尾补L-(N+M-1)个零;

    2. 三者之间的关系

    1)周期卷积是线性卷积以一定序列长度(设为L)为周期的周期延拓。
    2)对周期卷积取主值序列得到循环卷积。


    参考

    https://blog.csdn.net/abc123mma/article/details/120251384
    https://blog.csdn.net/weixin_45810064/article/details/121322948?
    https://blog.csdn.net/qq_39408570/article/details/110429928
    https://blog.csdn.net/qq_45732223/article/details/110526379

    展开全文
  • 循环卷积线性卷积

    千次阅读 2020-01-09 20:33:37
    循环卷积 针对的是两个长度都为N的序列,对两个序列做FFT,然后再做IFFT得到的结果就是循环卷积,结果的长度也是N。 直接计算步骤: 序列A与序列B,长度都是N,新的序列C ...线性卷积 针对的是两个...

    循环卷积

    针对的是两个长度都为N的序列,对两个序列做FFT,然后再做IFFT得到的结果就是循环卷积,结果的长度也是N。

    直接计算步骤:

    序列A与序列B,长度都是N,新的序列C

    1、把B倒过来。[翻转]

    2、把B向右平移一个元素。最右侧的元素补到左边。

    3、计算此时A和B对应元素的积的和。将其加到C的末尾。

    4、如果C中还不足N个元素,重复步骤2和3。

     

    线性卷积

    针对的是两个长度为L和M的序列,将两个序列都补0pad到N,做FFT,再做IFFT。得到的结果长度为L+M-1

    直接计算步骤:

    序列A与序列B,长度分别数L和M,都补0到N,新的序列C

    1、把B倒过来。[翻转]

    2、将B翻转之后的数组第一位与A的第一位对齐

    3、计算此时A和B对应元素的积的和。

    4、将B数组向右移动一位,继续计算。

    5、直到B数组与A数组没有重叠为止。

     

    两者的关系:

    如果想要计算循环卷积,可以将线性卷积进行周期化,然后计算。

    如果想要计算线性卷积,可以将循环卷积pad0,进行计算。

     

    【1】https://www.zhihu.com/question/25525824

    【2】https://wenku.baidu.com/view/829dd3ce541810a6f524ccbff121dd36a32dc4e9

    【3】bluestein算法 https://blog.csdn.net/outer_form/article/details/52386685

    展开全文
  • 桂林电子科技大学实训专用纸 PAGE 12 第PAGE 2页 编号 数字信号处理 实训 (论文)说明书 题 目 用matlab实现两信号的卷积 院 系 应用科技学院 专 业 电子信息工程 学生姓名 蒋耀华 学 号 0801130215 指导教师 严素清 ...
  • 线性卷积和循环卷积(圆周卷积)
  • 重叠加法有助于确定线性卷积的值,与脉冲响应或其他输入序列相比,包含大量输入序列。这是离散傅立叶变换的重要应用。这里,将大输入序列分成小框或part.circular 卷积是在另一个输入序列或脉冲响应每个小盒子之间...
  • 矩阵视角的循环卷积核线性卷积
  • 掌握线性卷积循环卷积软件实现的方法,理解掌握二者的关系 二、实例分析与计算 实验原理:两个序列的N 点循环卷积定义为)())(()()]()([N n m n x m h n x n h N k NN?∑-=01从定义中可以看出,循环卷积和线性卷积...
  • 周期卷积 对象:用以建立周期序列与DFS系数之间的桥梁。 定义式: 周期序列的周期卷积对应于与之相应的傅里叶级数系数序列的乘积。 循环卷积 对象:用以建立有限长序列与DFT系数之间的桥梁。...而且通过循环卷积...
  • 循环卷积和线性卷积

    千次阅读 2014-11-21 16:13:28
    1、循环卷积和线性卷积 http://hujianjust.blog.163.com/blog/static/7245507220106644025348/ 2、线性卷积和圆周卷积 http://blog.sina.com.cn/s/blog_892508d5010120dn.html 3、线性...
  • 数字信号处理循环卷积线性卷积
  • 区分线性卷积、周期卷积、循环卷积及其计算方法

    万次阅读 多人点赞 2021-11-14 20:36:32
    这是最常见的卷积方式,若被卷积序列x[n]与h[n]的序列长度分别为MN,则卷积得到的y[n]序列长为L=M+N-1,计算线性卷积的简单方法为进位保留法。 二、循环卷积 循环卷积与周期卷积最大的区别与联系在于循环卷积是取...
  • 线性卷积、周期卷积和循环卷积

    万次阅读 多人点赞 2020-07-22 12:59:44
    线性卷积、周期卷积和循环卷积 例题:已知序列x1(n)=[0,2,2,1] (n=0,1,2,3); x2(n)=[1,2,-1,1] (n=0,1,2,3).求解 (1)计算线性卷积y1(n)=x1(n)✳x2(n); (2)计算周期卷积y2(n)=x1(n)⊛x2(n);(N=5) (3)计算循环卷积y3(n...
  • 线性卷积循环卷积 在音频信号处理中,卷积是很常见的信号处理方式,例如fir滤波器,卷积的计算公式也非常简单,对于系统h输入信号x,卷积的计算公式如下:
  • 循环卷积线性卷积matlab实现.docx
  • 循环卷积线性卷积的matlab实现.doc
  • 系列文章目录 数字信号处理(DSP:Digital Signal Process)是电子通信领域非常重要的研究方向,博主汇总了数字信号处理(DSP)中常用的经典...第三篇 基于matlab实现信号的线性卷积循环卷积 基于matlab实现信号的线
  • 实现线性卷积和循环卷积,主要介绍了MATLAB 工具的这部分的使用方法,以及编程
  • 用离散傅里叶变换(循环卷积)实现线性卷积
  • 线性和循环卷积此示例说明如何建立线性卷积和循环卷积之间的等效关系线性卷积和循环卷积是本质不同的运算。然而,在某些条件下,线性卷积和循环卷积是等效的。建立这种等效关系具有重要意义。对于两个向量 x y...
  • 基于matlab的彩色gui动态显示线性卷积循环卷积,拥有良好的色彩效果的gui显示效果
  • 循环卷积线性卷积的matlab实现上海电力学院信号与系统实验报告题目:循环卷积线性卷积的实现班级: 2011023专业: 电气工程及其自动化学号2013 12 17年 月 日循环卷积线性卷积的实现一、实验目的1、进一步理解...
  • 实现线性卷积和循环卷积的动画演示 具体操作看代码
  • 线性卷积循环卷积与FFT

    千次阅读 2020-06-15 19:05:20
    关于线性卷积循环卷积和FFT之间的关系,MATLAB的帮助文档写的非常清晰,如下所示, 此外,下面链接也可以参考, [话题讨论] [原创]一个开始:线性卷积循环卷积 自己的理解, 最后,附上部分测试代码, clc;...
  • 如果则N上式称为循环卷积或圆周卷积注: 为 序列的周期化序列;...(4)循环卷积线性卷积关系序列 为 点长,序列 为 点长,若序列 进行N点的循环卷积,其结果是否等于该两序列的线性卷积,完全取决于循环卷积的...
  • 循环卷积DFT求线性卷积PPT学习教案.pptx

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,010
精华内容 9,204
热门标签
关键字:

循环卷积和线性卷积的关系