def ifft2d(F): (Nr, Nc) = F.shape f = np.zeros((Nr, Nc), dtype=complex) for m in range(Nr): f[m,:] = mm.ifft(F[m,:]) for n in range(Nc): f[:,n] = mm.ifft(f[:,n]) return(f)
import math import cmath import numpy as np import imageio import MyModule as mm import time x=[1,2,3,4] x1=mm.complex_idft(mm.complex_dft(x)) x2=mm.complex_idft(mm.fft(x)) x3=mm.ifft(mm.complex_dft(x)) x4=mm.ifft(mm.fft(x)) y=[5,6,7,8] output1=mm.conv(x,y) output2=mm.ifft(mm.fft(x)*mm.fft(y)) img=imageio.imread('lena.png')#[256-128:256+128,256-128:256+128] t1=time.time() imageio.imwrite('lenareconstructed.png',mm.ifft2d(mm.fft2d(img))) t2=time.time() print('img ifft takes %10.2f sec' %( t2-t1))
import matplotlib.pyplot as plt import MyModule as mm fs,x=sw.read('Libai.wav') N=512 fcutoff=2000 #freq Ncutoff=int(fcutoff/fs*N) #freq=fs*n/N Hlp=np.zeros((N),dtype=complex) for n in range(1,Ncutoff): Hlp[n]=(1.0+0.0j) Hlp[N-n]=(1.0+0.0j) Hlp[0]=1.0 hlp=mm.ifft(Hlp) mm.dftplot(hlp,Hlp) # Nfft=2**15 # xlp=mm.convlong(x,hlp,Nfft) # sw.write('LibaiLp.wav',fs,xlp)
# h[4]=0.1 # # plt.plot(h) # plt.plot(np.abs(mm.fft(h))) '''lp filter''' LP=np.zeros((N),dtype=complex) fc=0.08 Nc=int(fc*N) for n in range(Nc): LP[n]=1.0 LP[(N-n+N) % N]=1.0 plt.plot(np.abs(LP)) lp=mm.ifft(LP) lpr=np.zeros((N),dtype=complex) lpr[:N//2],lpr[N//2:]=lp[N//2:],lp[:N//2] plt.plot(lpr.real) #plt.plot(lp.real) lp_trimed = np.zeros((N),dtype=complex) lp_trimed[N//2-M//2:N//2+M//2]=lpr[N//2-M//2:N//2+M//2] LP_trimed=mm.fft(lp_trimed) plt.plot(np.abs(LP_trimed)) plt.plot(lp_trimed.real) '''lp-windowed 0.54-0.46cos(2pi*n/M)''' window=np.zeros((N),dtype=complex) for n in range(M):