47 lines
554 B
Julia
47 lines
554 B
Julia
|
using Images
|
||
|
using PyPlot
|
||
|
using FFTW
|
||
|
|
||
|
N = 64
|
||
|
x = shepp_logan(N)
|
||
|
|
||
|
figure(1)
|
||
|
clf()
|
||
|
subplot(2,2,1)
|
||
|
imshow(x)
|
||
|
|
||
|
X = fft(x)
|
||
|
subplot(2,2,2)
|
||
|
imshow(abs.(X))
|
||
|
|
||
|
Y = fftshift(X)
|
||
|
subplot(2,2,3)
|
||
|
imshow(abs.(Y))
|
||
|
|
||
|
Y[1:div(N,4)+1,:] .= 0.0
|
||
|
Y[3*div(N,4):end,:] .= 0.0
|
||
|
Y[:,1:div(N,4)+1] .= 0.0
|
||
|
Y[:,3*div(N,4):end] .= 0.0
|
||
|
|
||
|
subplot(2,2,4)
|
||
|
imshow(abs.(Y))
|
||
|
|
||
|
|
||
|
figure(2)
|
||
|
clf()
|
||
|
imshow(abs.(ifft(ifftshift(Y))))
|
||
|
|
||
|
|
||
|
|
||
|
function mydft(x)
|
||
|
N = length(x)
|
||
|
y = zeros(ComplexF64,N)
|
||
|
|
||
|
for l=1:N
|
||
|
for n=1:N
|
||
|
y[l] += x[n]*exp(-2*pi*im*(n-1)*(l-1)/N)
|
||
|
end
|
||
|
end
|
||
|
return y
|
||
|
end
|