【 MATLAB 】【 MATLAB 】DFT的性质讨论(三)序列的循环卷积及其 MATLAB 实现

举报
李锐博恩 发表于 2021/07/15 06:12:12 2021/07/15
【摘要】 这篇博文要将的是循环卷积,循环卷积和线性卷积还是有很大区别的,我们都知道,两个N点序列之间的线性卷积会得出一个更长的序列,不得不再一次要将区间限制在 0 <= n <= N -1。因此代替线性移位的是应该考虑循环移位,循环移位我们上面已经讨论了两篇博文: 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(时域方法) 【 MATL...

这篇博文要将的是循环卷积,循环卷积和线性卷积还是有很大区别的,我们都知道,两个N点序列之间的线性卷积会得出一个更长的序列,不得不再一次要将区间限制在 0 <= n <= N -1。因此代替线性移位的是应该考虑循环移位,循环移位我们上面已经讨论了两篇博文:

【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(时域方法)

【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(频域方法)



包含循环移位的卷积运算称为循环卷积,给出:

下面我们根据循环卷积的表达式来使用MATLAB实现循环卷积:

我们的思路是对位于[0,N-1]内的每个n产生一个 x((n-m))_N序列,并作为矩阵的行,然后将循环卷积的公式作为一个矩阵乘法来实现,这需要一个for循环。

直接给出函数:


  
  1. function y = circonvt(x1,x2,N)
  2. % N-point circular convolution between x1 and x2:(time - domain)
  3. % ________________________________________________________________
  4. % y = circonvt(x1,x2,N)
  5. % y = output sequence containing the circular convolution
  6. % x1 = input sequence of length N1 <= N
  7. % x2 = input sequence of length N2 <= N
  8. % N = size of circular buffer
  9. % Method y(n) = sum(x1(m)*x2((n-m) mod N))
  10. % Check for length of x1 and x2
  11. %
  12. if length(x1) > N
  13. error('N must be >= the length of x1')
  14. end
  15. if length(x2) > N
  16. error('N must be >= the length of x2')
  17. end
  18. x1 = [x1,zeros(1,N - length(x1))];
  19. x2 = [x2,zeros(1,N - length(x2))];
  20. m = 0:1:N-1;
  21. x2 = x2( mod(-m,N) + 1 );
  22. H = zeros(N,N);
  23. for n=1:N
  24. H(n,:)=cirshftt(x2,n-1,N);
  25. end
  26. y = x1 * H';

验证:


  
  1. clc
  2. clear
  3. close all
  4. x1 = [1,2,2];
  5. x2 = [1,2,3,4];
  6. y = circonvt(x1,x2,4)

y =

    15    12     9    14

不信你就手算,确实是这样的。

这里只是提供了实现循环卷积的一种方法。

不出意外,我应该还会接着写几种方法来实现循环卷积,包括频域方法。

明天又要有任务了,不知道还有没有时间接着写了,真是有毒,每次写到DFT都会有事。

定位走起!

 

 

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/83513991

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。