利用fft算法重写公式并理解频率和像素变化率的关系(完美解决问题)

本文详细描述了算法中计算像素变化率的过程,涉及二进制表示、傅里叶变换的反变换、符号确定规则以及频率与变化率的关系。作者通过实例展示了高频和低频如何影响变化率,并强调了在特定位置n,不同频率对变化率的影响差异。

算法我就不贴了。算法就是算法导论的内容。

我直接写推导过程。

假设变化率为f(n+1)-f(n)

首先计算二进制数,这里我假设为3位二进制。

例如:f(5)-f(4),

5和4的二进制为101,100。所以逆序数为101,001

101对应的频率为5, 001对应的频率为1。书上的代码是fft变换,这里是反变换,所以1是顺时针转动。

这里高频的只有5,所以先计算5的转动过程。

我先介绍一下Fk转动过程,首先,最高位为1的Fk的都这样转动,第一次转动为\pi,第二次转动为\pi/2,第k次转动为\pi/2^{k},总共会转动\log_{2} N次。至于转动的方向是根据正变换还是反变换,因为这里是反变换,所以1是顺时针转动,0是不转动。如果最高位不为1,就不转动,次高位为1,开始转动\pi/2,继续按照上面的规律转动,每次转动为当前层级2^(N-n)的\pi/2^{N-n}(从第零层开始),n为当前层级。

转动过程在生成的fn中起什么作用呢?我只能说是做加减组合之后就是生成fn的分量了,如何组合呢?关键就是符号的确定了。

符号的确定方式是这样的:

以ai在yj中的符号确定为例,

首先是a4在y5中的符号

100与101=100,经历了负正正,所以为负。

a6在y4中的符号

110与001=000,所以为正。

a3在y4中的符号

011与001=001,为负。

ai的下标的二进制数和yj的下标的二进制数的逆序数相与,出现偶数个1为正,奇数个1为负。

这样我就获得了傅里叶反变换的计算公式了。

总结如下:

1..首先是计算输入的ai在复平面的转动角度\theta_{i},即是ai*e^{\theta_{i} }。假设N恰好是2次方幂,设长度为m=\log_{2} N。假设下标i的二进制数为x1x2....xm。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值