写出两个向量作为卷积

时间:2019-03-23 02:19:41

标签: fft convolution

如何将两个列向量写为解析卷积,以便可以使用离散FFT。使用MATLAB语法。

考虑:

  1. 一组向量,当将其分类为步进函数时,将显示以下任意一项:

    [1,1,1,1,0,0,0,0][1,1,1,1,1,0,0,0][1,1,1,1,1,1,0,0]

    (...函数“逐步增强”的位置因该集合的成员而异)

  2. 另一个是随机的vec=[1,0,1,0,1,1,1,0],显然两者都只包含0和1。

是否可以将这些向量写为解析卷积?我希望卷积的第一,第二,第三,第四...条目具有以下值:

sum(vec.*[1,0,0,0,0,0,0,0])
sum(vec.*[1,1,0,0,0,0,0,0])
sum(vec.*[1,1,1,0,0,0,0,0])
sum(vec.*[1,1,1,1,0,0,0,0])
... 
sum(vec.*[1,1,1,1,1,1,1,1])

为了提高速度,我试图避免使用for循环。我无法向量化,因为这需要TB的RAM。 (我使用的矢量长度不是8,而是长度接近一百万)。

卷积定理从傅立叶变换 F << em> L 1 / w 的卷积给出函数 R / em>及其相反的 F -1 as,

<code>\[R(w) = \int {\frac{{L(w')}}{{w - w' + i{0^ + }}}dw'}  = {F^{ - 1}}\left( {F\left( {L(w)} \right) \cdot F\left( {{\textstyle{1 \over w}}} \right)} \right)\]</code>

很明显,卷积中的函数 1 /(w-w')来自 F 下的 1 / w ;就像您只是设置 w' = 0一样。但是,如果我在[1,1,1,1,0,0,0,0]中使用类似的推理,则会得到[1,1,1,1,1,1,1,1],即MATLAB中.*下的标识或[0,0,0,0,0,0,0,0](非常无聊)。

我所做的推理有什么错误?

0 个答案:

没有答案