初步實現fft(偶數點與奇數點均可)

2021-08-14 09:42:19 字數 547 閱讀 5274

之前做影象傅利葉變換時,想自己實現快速傅利葉變換,苦於網上的fft**都要求點數是2的冪次方,在補0變換後加濾波需要分析補0的影響(頻率域拓寬),於是自己實現了一下不論奇數偶數均可的fft。

演算法很簡單,在計算中若序列總數為偶數就劃分為奇數部分與偶數部分,直到所有序列都為奇數時,直接用dft計算奇數部分的頻域值,再用fft組合起來。

先貼**,首先定義複數結構體

struct fu

;

fft主體,dft_ffts這個函式是普通的dft,用作在分為不可再分的奇數點時計算,外部呼叫直接用ffts函式即可

/*計算複數的乘*/

struct fu mul(fu a,fu b)

/*dft*/

void dft_ffts(struct fu* linear,int size,int start,int step)

index=index*sizemin;

k=index;

for(j=0,z=i;j0;h--,i++) //每層

{ for(j=0;j

奇數與偶數

所謂偶數還是奇數,分別的關鍵在於是否存在 2 的因子。2n 1 是第 n 個奇數,2n 1,則是第 n 1 個奇數 最簡分數 pq 也即不存在公共因子 p,q 一定不會同時是偶數,但卻可以同時是奇數。奇數 b 一定可以表示為 b k a 1b 1 之後一定是偶數,a 可以取 2 2 a 1,2 b ...

陣列與矩陣 奇數下標都是奇數或者偶數下標都是偶數

題目 奇數下標都是奇數或者偶數下標都是偶數 要求 給定乙個長度不小於2的陣列arr,實現乙個函式調整arr 要麼讓所有的偶數下標都是偶數,要麼讓所有的奇數下標都是奇數 時間複雜度o n 空間複雜度o 1 include include using namespace std void modify ...

進貢 數學思維 奇數與質數與偶數的關係

描述 古代的皇帝每年都要給神靈進貢,祈求來年風調雨順,國富民安。但是就算進貢再好的物品,神靈們也會有不滿意度的。皇帝每年進貢的物品數量必須嚴格大於1份。如果皇帝某一年進貢了m份貢品,那麼神靈的不滿意度為m的約數中,比m小且最大的那個。現在假設國王要在k年內進貢完n份貢品,你能找出一種方案使得神靈的不...