|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Matlab 傅里叶变换傅里叶逆变换-FFT-IFFT
+ r. g# m" l3 ?
( Z2 r; e# q% A; d$ F! j/ I# j( I%% 信号经过傅里叶变换然后进行傅里叶逆变换后信号的变化
7 p: a0 r- p! M6 Q& d7 K: i m4 J/ Rclear all; clc;# l) m5 o4 ]. k) B' P$ E
%------Author&Date------) u1 c' H* z5 Z/ f8 l2 C
%Author:
8 A1 L/ R& _# w6 U/ F%Date: 2013/07/31" N' k" u* G( e& ^3 O* M
%========================================================================== ) p5 _( |7 ~& F$ G" m$ W' U4 M" h
Fs=8e3; %采样率
( o0 ?1 P4 b: P$ \0 It=0:1/Fs:1; %采样点
( y! d; z" `0 j' P9 ulen=length(t); %采样长度' y9 b1 C% A# ~4 d
f1=10; %频率 1
* V- f* W4 p/ ]% ~! ]* rf2=100; %频率 2
, p) l) @& l% _2 R* ~6 x9 {* `( Qf3=1000; %频率 3: p r6 w7 E7 L; I; t
A1=1; %幅度 15 a. J- C2 s: j9 \; q# k5 u
A2=0.8; %幅度 2! t7 z# j" B9 U, D( H% Q- h# d
A3=0.3; %幅度 3! Y0 h ?0 _+ W' X$ q# A6 X. }
MaxS=A1+A2+A3; %信号幅度的最大值* R5 Q. d8 H0 N% e! P6 u5 t
signal=A1*sin(2*pi*f1*t)+A2*sin(2*pi*f2*t)+A3*sin(2*pi*f3*t);
0 M6 o, C d4 l4 ] e4 [X=fft(signal,len); %傅里叶变换
- W6 c- a3 E3 M, y" P; b# [magX=abs(X); %信号的幅度. u" u: L% o5 }3 j( e% h
angX=angle(X); %信号的相位
& H3 `( Z/ g! ~) R( K i& m. NY=magX.*exp(1i*angX); %信号的频域表示$ ]5 {7 ~) |. G. b# S% V
y=ifft(Y,len); %信号进行傅里叶逆变换& A) ]0 ]* p0 l) @
y=real(y);2 M4 W4 b2 U, I$ f6 U: v& c
er=signal-y; %原始信号和还原信号的误差
, P; T7 n( y( O- M0 z; xsubplot(311);plot(t,signal);axis([0 1 -MaxS MaxS]);xlabel( ' 时间 ' );ylabel( ' 振幅' );title( ' 原始信号 ' );* j( v8 Y3 I7 N4 Y
subplot(312);plot(t,y);axis([0 1 -MaxS MaxS]);xlabel( ' 时 间 ' );ylabel( ' 振 幅 ' );title( ' 还原信号 ' );
* u% D+ o4 B' ^1 p* z' |) ssubplot(313);plot(t,er);xlabel( ' 时间 ' );ylabel( ' 振幅 ' );title( ' 误差 ' );7 ?" Z3 A5 E1 T
% End Script0 S, ~( E+ x/ F* P" Z
. S* l5 s, L: K% t; X' w8 a/ }( t! a
; X9 A. O3 h2 L6 _
; Z; Z% Q) i5 k5 s h0 w
" Z: j) d/ u% y9 G8 V( i
误差er的数量级为
,误差绝对值的最大值(
)如下图:
( @9 z/ F, [) B; h/ Y8 E
7 f5 g) d- i: v- K
a, o* T0 Z6 G7 e# w: W; h
3 O: P1 f% \* z! `7 T6 c* }/ D0 N, r6 D! H- G: o J
0 ?7 V2 s" H7 Q
/ ^1 z$ }0 o7 q0 Q5 U# U. b" J2 m. ]' S! i# m, }( v
|
|