證明2D FFT能夠拆分成兩個1D FFT

2021-07-03 22:28:05 字數 1133 閱讀 7564

經常可以在文獻上看到2d-fft能夠以兩個1d-fft來實現,今天我用matlab證明了,的確如此。matlab的**如下

clear all;

clc;

f=ones(256,256);

center_loc = size(f);

rd = 2;

f(round(center_loc(1)/2)-rd:round(center_loc(1)/2)+rd, round(center_loc(2)/2)-rd:round(center_loc(2)/2)+rd) = 0;

figure(1);imshow(f);

f2=fft2(f);

f3=(abs(f2));

figure(2);imshow(f3);

tmp=zeros(center_loc(1),center_loc(2));

%-the first 1d-fft, for each row

for i= 1:center_loc(1)

tmp(i, :) = fft(f(i, :), center_loc(2));

end%-transpose the tmp, for column-based 1d-fft

tmp = tmp';

%-the second 1d-fft, for each column

for i= 1:center_loc(1)

tmp(i, :) = fft(tmp(i, :), center_loc(2));

endtt = abs(tmp);

figure(3); imshow(tt);

以下三張圖從上到下,分別對應**中的figure(1~3)。

將單鏈表L拆分成兩個帶頭結點的單鏈表L1和L2

有乙個帶頭結點的單鏈表l 設計乙個演算法將其拆分成兩個帶頭結點的單鏈表l1和l2,其中l1 l2 要求l1使用l的頭結點。利用原單鏈表l中的所有結點通過改變指標域重組成兩個單鏈表l1,l2.其中l1的相對順序與l相同,所以採用頭插法建立單鏈表l1.l2的相對順序與l相反,所以採用尾插法。includ...

(1)用兩個棧實現佇列和(2)用兩個佇列實現棧

很經典的乙個演算法題,既考察了棧的性質,又考察了佇列的性質。我們可以定乙個stack1,stack2.入棧的時候直接入到stack1,當出棧的時候,先判斷stack2是否為空,為空的話,把stack1順序出棧壓入stack2.然後把stack2棧頂元素彈出。同理取front元素的時候也一樣。empt...

兩個有序陣列 A1 A2 的合併

問題6 有序陣列 a1 a2 的合併 test public void orderarraymerge int a2 int a1a2index a1.length 1 int a1rear a1.length a2.length 1 int a2rear a2.length 1 while a2r...