【线性卷积的DFT算法--重叠相加法和重叠保留法】

这篇具有很好参考价值的文章主要介绍了【线性卷积的DFT算法--重叠相加法和重叠保留法】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在复习数字信号处理课程中,有关线性卷积的DFT算法的重叠相加法和重叠保留法根据教材不甚理解,网络上未找到便于手算的例题讲解过程,故在学习之后两种方法分别用两个例题详细过程用于理解,写下此文章用于其他人查找和自己学习。


一、重叠相加法

步骤

1、将长序列 x [ n ] x[n] x[n] 拆分成多个短序列
x [ n ] = ∑ k x k [ n − k L ] x[n]=\sum_{k}x_k[n-kL] x[n]=kxk[nkL]
x k [ n ] x_k[n] xk[n]长度为 L , L ≪ N x L,L\ll N_x L,LNx
x k ( n ) = { x [ n + k L ] n = 0 , 1 , 2 , . . . , L − 1 0 其他 \begin{equation} x_k(n)=\left\{ \begin{aligned} &x[n+kL]\quad &n=0,1,2,...,L-1\\ &0\quad &其他\\ \end{aligned} \right . \nonumber \end{equation} xk(n)={x[n+kL]0n=0,1,2,...,L1其他
2、重叠相加
y [ n ] = ( ∑ k x k [ n − k L ] ) ⊗ h [ n ] = ∑ k x k [ n − k L ] ⊗ h [ n ] = ∑ k y k [ n − k L ] \begin{equation} \begin{split} y[n]&=(\sum_k x_k[n-kL])\otimes h[n]\\ &=\sum_k x_k[n-kL]\otimes h[n]\\ &=\sum_k y_k[n-kL] \end{split} \nonumber \end{equation} y[n]=(kxk[nkL])h[n]=kxk[nkL]h[n]=kyk[nkL]

例题

例:计算序列 x [ n ] x[n] x[n]与序列 h [ n ] h[n] h[n]的线性卷积和,其中
x [ n ] = { 1 , 2 , 3 , 2 , 1 , 0 , 1 , 2 , 2 , 1 , 1 , 1 } , h [ n ] = { 1 , 2 , 1 } x[n]=\left\{1,2,3,2,1,0,1,2,2,1,1,1 \right\},h[n]=\left\{ 1,2,1 \right\} x[n]={1,2,3,2,1,0,1,2,2,1,1,1},h[n]={1,2,1}

解:序列分解,用 x [ n ] x[n] x[n]做分解

% Matlab代码
x = [1 2 3 2 1 0 1 2 2 1 1 1];
h = [1 2 1];
x1=[1 2 3 2 0 0 0 0 0 0 0 0] ;
x2=[0 0 0 0 1 0 1 2 0 0 0 0];
x3=[0 0 0 0 0 0 0 0 2 1 1 1];
xh1 = conv(x1, h); % [1 4 8 10 7 2 0 0 0 0 0 0 0 0]
xh2 = conv(x2, h); % [0 0 0 0 1 2 2 4 5 2 0 0 0 0]
xh3 = conv(x3, h); % [0 0 0 0 0 0 0 0 2 5 5 4 3 1]
y=conv(x,h); % [1 4 8 10 8 4 2 4 7 7 5 4 3 1]

分别将分解出的序列与 h [ n ] h[n] h[n]作线性卷积,然后相加得到结果。

二、重叠保留法

步骤

1、将长序列 x [ n ] x[n] x[n]拆分成多个短序列
x [ n ] = ∑ k x k [ n − k L ] x[n]=\sum_k x_k[n-kL] x[n]=kxk[nkL]
x k [ n ] x_k[n] xk[n]长度为 L , L ≥ M , M 为 h [ n ] 的长度 L,L\ge M,M为h[n]的长度 LLM,Mh[n]的长度
x k ( n ) = { x [ n + k ( L − M + 1 ) ] n = 0 , 1 , 2 , . . . , L − 1 0 其他 \begin{equation} x_k(n)=\left\{ \begin{aligned} &x[n+k(L-M+1)]\quad &n=0,1,2,...,L-1\\ &0\quad &其他\\ \end{aligned} \right . \nonumber \end{equation} xk(n)={x[n+k(LM+1)]0n=0,1,2,...,L1其他
2、重叠保留圆周卷积 x k [ n ] L ◯ h [ n ] x_k[n] \normalsize{\textcircled{\scriptsize{L }}}\normalsize h[n] xk[n]Lh[n]的后 L − M + 1 L-M+1 LM+1点。原因是 L L L点序列与 M M M点序列圆周卷积后,前 M − 1 M-1 M1点发生了混叠。
w k [ n ] = x k [ n ] L ◯ h [ n ] w_k[n]=x_k[n] \normalsize{\textcircled{\scriptsize{L }}}\normalsize h[n] wk[n]=xk[n]Lh[n]
y [ n ] = ∑ k y k [ n − k L ] , y k [ n ] = { 0 n = 0 , 1 , 2 , . . . , L − 1 w k [ n ] M − 1 ≤ n ≤ L − 1 \begin{equation} y[n]=\sum_k y_k[n-kL],y_k[n]=\left\{ \begin{aligned} &0\quad &n=0,1,2,...,L-1\\ &w_k[n]\quad &M-1\le n\le L-1\\ \end{aligned} \right . \nonumber \end{equation} y[n]=kyk[nkL],yk[n]={0wk[n]n=0,1,2,...,L1M1nL1

例题

例:计算序列 x [ n ] x[n] x[n]与序列 h [ n ] h[n] h[n]的线性卷积和,其中
x [ n ] = { 1 , 2 , 3 , 2 , 1 , 0 , 1 , 2 , 2 , 1 , 1 , 1 } , h [ n ] = { 1 , 2 , 1 } x[n]=\left\{1,2,3,2,1,0,1,2,2,1,1,1 \right\},h[n]=\left\{ 1,2,1 \right\} x[n]={1,2,3,2,1,0,1,2,2,1,1,1},h[n]={1,2,1}

解:序列分解(以 x [ n ] x[n] x[n]为例)

% Matlab代码
x = [1 2 3 2 1 0 1 2 2 1 1 1];
h = [1 2 1]; H = fft(h,6);
x1=[0 0 1 2 3 2];
x2=[3 2 1 0 1 2];
x3=[1 2 2 1 1 1];
x4=[1 1 0 0 0 0];
X1=fft(x1,6); Y1=X1.*H;
X2=fft(x2,6); Y2=X2.*H;
X3=fft(x3,6); Y3=X3.*H;
X4=fft(x4,6); Y4=X4.*H;
y1=ifft(Y1,6);y2=ifft(Y2,6);
y3=ifft(Y3,6);y4=ifft(Y4,6);

即分解成 x 1 [ n ] = { 0 , 0 , 1 , 2 , 3 , 2 } , x 2 [ n ] = { 3 , 2 , 1 , 0 , 1 , 2 } , x 3 [ n ] = { 1 , 2 , 2 , 1 , 1 , 1 } , x 4 [ n ] = { 1 , 1 , 0 , 0 , 0 , 0 } x_1[n]=\left\{0,0,1,2,3,2 \right\},x_2[n]=\left\{3,2,1,0,1,2 \right\},x_3[n]=\left\{1,2,2,1,1,1 \right\},x_4[n]=\left\{1,1,0,0,0,0 \right\} x1[n]={0,0,1,2,3,2},x2[n]={3,2,1,0,1,2},x3[n]={1,2,2,1,1,1},x4[n]={1,1,0,0,0,0}
如此分解是因为选取 L = 6 ≥ M L=6\ge M L=6M,前 M − 1 M-1 M1即2点发生混叠,保留后4点,于是在初始选取时需要在前面补2个零,弥补混叠后丢失的值。
计算有
x 1 [ n ] 6 ◯ h [ n ] = { 7 , 2 , 1 , 4 , 8 , 10 } x 2 [ n ] 6 ◯ h [ n ] = { 8 , 10 , 8 , 4 , 2 , 4 } x 3 [ n ] 6 ◯ h [ n ] = { 4 , 5 , 7 , 7 , 5 , 4 } x 4 [ n ] 6 ◯ h [ n ] = { 1 , 3 , 3 , 1 , 0 , 0 } x_1[n] \normalsize{\textcircled{\scriptsize{6 }}}\normalsize h[n]=\left\{7,2,1,4,8,10 \right\}\\ x_2[n] \normalsize{\textcircled{\scriptsize{6 }}}\normalsize h[n]=\left\{8,10,8,4,2,4 \right\}\\ x_3[n] \normalsize{\textcircled{\scriptsize{6 }}}\normalsize h[n]=\left\{4,5,7,7,5,4 \right\}\\ x_4[n] \normalsize{\textcircled{\scriptsize{6 }}}\normalsize h[n]=\left\{1,3,3,1,0,0\right\} x1[n]6h[n]={7,2,1,4,8,10}x2[n]6h[n]={8,10,8,4,2,4}x3[n]6h[n]={4,5,7,7,5,4}x4[n]6h[n]={1,3,3,1,0,0}
于是每个结果保留后4位,得到最后结果
x [ n ] L ◯ h [ n ] = { 1 , 4 , 8 , 10 , 8 , 4 , 2 , 4 , 7 , 7 , 5 , 4 , 3 , 1 } x_[n] \normalsize{\textcircled{\scriptsize{L }}}\normalsize h[n]=\left\{1,4,8,10,8,4,2,4,7,7,5,4,3,1 \right\} x[n]Lh[n]={1,4,8,10,8,4,2,4,7,7,5,4,3,1}文章来源地址https://www.toymoban.com/news/detail-495961.html

到了这里,关于【线性卷积的DFT算法--重叠相加法和重叠保留法】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 题02-线性结构2 一元多项式的乘法与加法运算(C语言)

    设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式

    2024年02月07日
    浏览(41)
  • 【算法日志】贪心算法刷题:重叠区问题(day31)

    目录 前言 无重叠区间(筛选区间) 划分字母区间(切割区间)  合并区间 今日的重点是掌握重叠区问题。

    2024年02月12日
    浏览(47)
  • 浙大数据结构第二周02-线性结构2 一元多项式的乘法与加法运算

    设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式

    2024年02月13日
    浏览(49)
  • 线性卷积和循环卷积(圆周卷积)

    一、线性卷积: 一个输入经过一个线性时不变系统,得到的输出就是线性卷积。 举例: x[n] = [1, 3, 2, 4]; h[n] = [2, 1, 3]; y[n] = [2, 7, 10, 19, 10, 12]; 矩阵表示形式: 输出的长度等于两个输入长度的和减一(L1 + L2 - 1). 二、循环卷积 x[n] 和 h[n]都是周期的,下面公式中的h((n-m))不同于

    2024年02月11日
    浏览(33)
  • 最大似然估计法和Zero Forcing算法的思考

    本篇文章是学习了B站UP主 乐吧的数学 之后的笔记总结,老师讲的非常好,大家有兴趣的可以关注一波! 那么 Maximum Likelihood(ML) 算法是最优的检测,这个最优指的是使错误率最低(假定发送的 x 是等概率出现的),从最低错误率的角度出发,同时假定在每个天线处的高斯白噪

    2023年04月09日
    浏览(42)
  • 基于帧差法和形态学处理的行驶车辆跟踪算法matlab仿真

    目录 1.算法理论概述 2.部分核心程序 3.算法运行软件版本 4.算法运行效果图预览 5.算法完整程序工程         车辆跟踪是计算机视觉领域中的一个重要问题,它在交通监控、智能交通系统、自动驾驶等领域具有广泛的应用。本文介绍一种基于帧差法和形态学处理的车辆跟踪算

    2024年02月16日
    浏览(37)
  • 11- OpenCV:自定义线性滤波(卷积,卷积边缘)

    目录 一、卷积 1、卷积概念 2、卷积如何工作 3、常见算子(卷积核 Kenel) 4、自定义卷积模糊 5、代码演示 二、卷积边缘 1、卷积边缘问题 2、处理边缘 3、相关的API说明 4、代码演示 一、卷积 1、卷积概念 (1)在OpenCV中,卷积是一种常用的图像处理操作,用于图像滤波、特征

    2024年01月19日
    浏览(33)
  • 【FPGA目标跟踪】基于FPGA的帧差法和SAD匹配算法的目标跟踪实现

    quartusii12.1 FPGA整体的算法流程如下图所示:  FPGA的模块主要包括如下几大模块: 摄像机驱动程序,SDRAM控制程序,显示屏驱动程序,中值滤波程序,帧差法模块,SAD模板匹配模块,跟踪定位模块等等。 跟踪模块顶层程序 帧差法模块 SAD模板匹配模块,R通道 SAD模板匹配模块,

    2024年02月04日
    浏览(43)
  • 算法刷题-哈希表-四数相加

    需要哈希的地方都能找到map的身影 力扣题目链接 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果

    2024年02月08日
    浏览(42)
  • LeetCode算法题---两数相加(二)

    给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1:   示例 2: 示例

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包