MATLAB验证时域和频域卷积定理

MATLAB 验证时域和频域卷积定理
卷积编码
时域卷积定理
WIKI:百度:,:频域卷积定理:
WIKI: 或者百度:,:总体上很相似但是在频域卷积定理上百度百科多除了⼀个,原因未知。接下来使⽤matlab验证卷积定理,当前⽹上都是矩阵验证且使⽤了IFFT,并不能实实在在的观察到卷积定理,⽽且在真正项⽬编码实现的时候既然使⽤到卷积定理,那⼤部分是不想⽤IFFT了。时域卷积定理:
x1=[1 2 3 4 5];
x2=[2 3 4 5 6];
yx1=fft(x1);
yx2=fft(x2);
xx=cconv(x1, x2, 5);
fftxx=fftshift(fft(xx));test=fftshift(yx1).* fftshift(yx2);频域卷积定理:
x1=[1 2 3 4 5];
x2=[2 3 4 5 6];
yx1=fft(x1);
yx2=fft(x2);
xx=x1.*x2;
fftxx=fftshift(fft(xx));
fftxx=fftxx*5;test = ifftshift( cconv( fftshift(yx1), fftshift(yx2),5 ) );以上:频域卷积定理验证时的结果形式和WIKI上的是⼀致的,百度百科上的可能需要该函数或者其他的⼀些操作。
在⽹上很多验证失败的根本原因是函数使⽤不正确,要想得到验证,每⼀个变量fft后都需要做⼀次fftshift,因为fft后频率是[0,fs/2]+[-fs/2,0]的形式,⽽shift后则变成[-fs/2,fs/2]。其次,卷积不可直接使⽤conv或者conv2等线性卷积(即我们经常使⽤的⼀种卷积⽅式,详见matlab的conv⽂档),直接使⽤的是cconv圆周卷积,原因是:fft本⾝是⼀个⽆限操作,圆周卷积也可以变成⼀种⽆限操作。
在频域卷积定理中,卷积之后需要乘以x1或者x2的长度(或者圆周卷积后除以x2长度,好像是圆周卷积做了x2长度个周期),x1和x2的长度肯定是相同的,因为两个之间的操作是点乘。
线性卷积和循环卷积可以互换。F {f ∗g }=F {f }⋅F {g }
f (t )↔1F (ω)1f (t )↔2F (ω)2F [f (t )∗1f (t )]=2F (ω)⋅1F (ω)
2F {f ⋅g }=F {f }∗F {f }f ∗g =F {F {f }⋅−1F {g }}
f (t )↔1F (ω)1f (t )↔2F (ω)2F [f (t )⋅1f (t )]=2F (ω)∗2π1
1F (ω)
22π

本文发布于:2024-09-22 05:29:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/377252.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:卷积   卷积定理   验证   频域   需要   长度
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议