3371|1

693

帖子

7

TA的资源

版主

楼主
 

离散序列的卷积运算和相关运算的快速傅里叶变换 [复制链接]

# 离散序列的卷积运算和相关运算的快速傅里叶变换

离散序列卷积运算与快速傅里叶变换

离散序列信号f(n),g(n)的卷积为:

如果直接进行卷积运算,每个f(n)的值都必须与每个g(n)的值相乘,假如f(n)与g(n)的长度相同,也需要进行N的平方次乘法运算,这对处理器的性能有很高的的要求,并且还浪费时间。

  1. %%%% 普通方法求卷积
  2. a = [1 2 3 4]; % 序列1
  3. b = [4 6 8 2]; % 序列2
  4. c = conv(a,b); % 求两个序列的卷积和
  5. c
  6. c =
  7. 4 14 32 52 52 38 8

如果将离散卷积改为离散圆卷积,前面帖子有讲:信号的相关运算及在单片机程序运用中的算法分析(二) 并借助FFT,可以减少直接卷积的工作量。

大概流程:

1、分别求两个序列的傅里叶变换;

2、求频域相乘的乘积;

3、傅里叶反变换;

  1. %%%% FFT求卷积
  2. a = [1 2 3 4]; % 序列1
  3. b = [4 6 8 2]; % 序列2
  4. c = conv(a,b); % 求两个序列的卷积和
  5. a1 = [1 2 3 4 0 0 0];% 扩充维度与卷积结果的维度一致
  6. b1 = [4 6 8 2 0 0 0];% 扩充维度与卷积结果的维度一致
  7. a_f = fft(a1); % 序列求傅里叶变换
  8. b_f = fft(b1); % 序列求傅里叶变换
  9. c_f = a_f .* b_f; % 频域相乘
  10. C = ifft(c_f); % 傅里叶反变换
  11. C
  12. C =
  13. 4.0000 14.0000 32.0000 52.0000 52.0000 38.0000 8.0000

可以发现,普通方法和FFT法求得的c和C的结果是完全相同的,FFT的运算速度更快(这个可以在运算中感受到)。

离散序列相关运算与快速傅里叶变换

离散序列信号f(n),g(n)的相关运算为:

与卷积运算相比,相关运算少了一个时间反转。

  1. %%%% 普通相关运算
  2. a = [1 2 3 4]; % 序列1
  3. b = [4 6 8 2]; % 序列2
  4. c = xcorr(a,b); % 求两个序列的相关运算
  5. c
  6. c =
  7. 2.0000 12.0000 28.0000 48.0000 58.0000 36.0000 16.0000

下面借助FFT算法进行分析:

1、对两个序列做傅里叶变换得A(k)、B(k);

2、将A(k)、B(k)进行共轭相乘,A(k)B*(k);

3、傅里叶反变换;

  1. %%%% FFT相关运算
  2. a = [1 2 3 4]; % 序列1
  3. b = [4 6 8 2]; % 序列2
  4. c = xcorr(a,b); % 求两个序列的相关运算
  5. a1 = [1 2 3 4 0 0 0]; % 扩充维度与相关运算结果的维度一致
  6. b1 = [4 6 8 2 0 0 0]; % 扩充维度与相关运算结果的维度一致
  7. a_f = fft(a1); % 序列求傅里叶变换
  8. b_f = fft(b1); % 序列求傅里叶变换
  9. b_F = conj(b_f); % 取共轭
  10. c_f = a_f .* b_F; % 频域相乘
  11. C = ifft(c_f); % 傅里叶反变换
  12. C = fftshift(C); % 移动零频点到频谱中间
  13. >> C
  14. C =
  15. 2.0000 12.0000 28.0000 48.0000 58.0000 36.0000 16.0000

经验证,结果相同。

结论

运算结果相同的前提下,FFT的运算速度会更快。

参考文献

[1]傅晓林.离散卷积和相关运算的快速傅立叶仿真研究[J].重庆交通学院学报,2003(04):76-79.

查看精华帖全部内容,请登录或者注册

此帖出自创意市集论坛

最新回复

感谢楼主,讲的太好了   详情 回复 发表于 2020-3-27 14:14

赞赏

1

查看全部赞赏

点赞(1) 关注(1)
 
 

回复
举报

661

帖子

18

TA的资源

纯净的硅(初级)

沙发
 

感谢楼主,讲的太好了

此帖出自创意市集论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 2/10 下一条
TI 处理器AM62L深度讲解,报名直播赢【双肩包、充电器、胶囊伞】
【直播要点】• 如何实现安全节能设计;• 开箱体验和demo;• 软件和硬件
【直播时间】3月21日(周五)上午10:00

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表