1.3 Discrete Fourier Transform
1.3 Discrete Fourier Transform
1.3.1 Data Compression via DFT
1.3.1 Data Compression via DFT
In[]:=
u={1,1,2,2,1,1,0,0};
In[]:=
v=Fourier[{1,1,2,2,1,1,0,0}]
Out[]=
{2.82843+0.,-0.5+1.20711,0.+0.,0.5-0.207107,0.+0.,0.5+0.207107,0.+0.,-0.5-1.20711}
In[]:=
vAbs=Abs[v]
Out[]=
{2.82843,1.30656,0.,0.541196,0.,0.541196,0.,1.30656}
In[]:=
vArg=Arg[v]
Out[]=
{0.,1.9635,0.,-0.392699,0.,0.392699,0.,-1.9635}
In[]:=
InverseFourier[vAbsExp[IvArg]]
Out[]=
{1.,1.,2.,2.,1.,1.,0.,-1.57009×}
-16
10
In[]:=
Chop[%]
Out[]=
{1.,1.,2.,2.,1.,1.,0,0}
In[]:=
vvAbs=Map[If[#<0.6,0,#]&,vAbs]
Out[]=
{2.82843,1.30656,0,0,0,0,0,1.30656}
In[]:=
uu=InverseFourier[vvAbsExp[IvArg]]//Chop
Out[]=
{0.646447,1.35355,1.85355,1.85355,1.35355,0.646447,0.146447,0.146447}
In[]:=
ListPlot[{u,uu},JoinedTrue,FrameTrue]
Out[]=
In[]:=
Face=
;
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
In[]:=
Image[Face]
Out[]=
In[]:=
FaceFu=Fourier[Face];
In[]:=
AbsFaceFu=Abs[FaceFu];
In[]:=
ListPlot3D[AbsFaceFu,PlotRange{0,4}]
Out[]=
In[]:=
data=Flatten[AbsFaceFu];
In[]:=
Histogram[data]
Out[]=
In[]:=
M=AbsFaceFu;
In[]:=
Do[If[AbsFaceFu[[i,j]]>0.5,M[[i,j]]=AbsFaceFu[[i,j]],M[[i,j]]=0],{i,1,20},{j,20}]
In[]:=
ListPlot3D[M,PlotRange{0,2}]
Out[]=
In[]:=
n0=Select[Flatten[M],#0&]//Length
Out[]=
349
In[]:=
n0/(20.×20)
Out[]=
0.8725
In[]:=
Chop[InverseFourier[MExp[IArg[FaceFu]]]]//Image
Out[]=
1.3.2 DFT Image Compression
1.3.2 DFT Image Compression
In[]:=
img=
;