|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Matlab 傅里叶变换傅里叶逆变换-FFT-IFFT0 g5 `" O$ E5 `: L! W) |* }
' P8 [; w( W7 A* j9 X- x%% 信号经过傅里叶变换然后进行傅里叶逆变换后信号的变化4 y6 `2 Z- B" j2 y; k
clear all; clc;
, _" |" e. A3 @( R%------Author&Date------, c# Q/ I8 v& l' w E) ~1 L$ c( C5 w( t
%Author:
3 x2 D9 }- n+ f4 c6 G%Date: 2013/07/31
# I$ c- w4 z( L5 \( I6 g6 h( W%========================================================================== : A3 ] ]: t, ]1 D3 \
Fs=8e3; %采样率
9 ^- ?9 {1 d- {$ @& \5 b) ?t=0:1/Fs:1; %采样点
9 d: y( L+ f& T2 g7 Y h- m0 N, Slen=length(t); %采样长度
# @& @" [" I( R+ X7 I" t. N' af1=10; %频率 1. B8 b' D* H" `" r& d! Y
f2=100; %频率 2% L- T% H& Q8 O! Q8 E6 }9 \0 {" {
f3=1000; %频率 3+ b& t+ [+ {/ `. l9 j; N1 A
A1=1; %幅度 1
- q& C, S8 v) _, JA2=0.8; %幅度 2
/ h c( _- V6 M# tA3=0.3; %幅度 3$ [" `& R) i3 [- H7 o" s+ ^) U
MaxS=A1+A2+A3; %信号幅度的最大值
! S& P4 u+ Z( I* usignal=A1*sin(2*pi*f1*t)+A2*sin(2*pi*f2*t)+A3*sin(2*pi*f3*t);
6 ^# X* P: [) _/ m) L1 _X=fft(signal,len); %傅里叶变换
6 | d% M* A7 Z, R+ fmagX=abs(X); %信号的幅度1 Q/ P1 p. V+ z S
angX=angle(X); %信号的相位' C a" a3 Q% Z" ~ W/ j! i- F" w
Y=magX.*exp(1i*angX); %信号的频域表示
( O Y v* K& G( D: p: Cy=ifft(Y,len); %信号进行傅里叶逆变换8 ~ s+ t7 s8 Q
y=real(y);
* o6 G* _- |8 G6 l8 r& Her=signal-y; %原始信号和还原信号的误差
, {. S$ T4 B' l' e4 r1 Jsubplot(311);plot(t,signal);axis([0 1 -MaxS MaxS]);xlabel( ' 时间 ' );ylabel( ' 振幅' );title( ' 原始信号 ' );9 @. b1 k* l9 B9 K; w! t
subplot(312);plot(t,y);axis([0 1 -MaxS MaxS]);xlabel( ' 时 间 ' );ylabel( ' 振 幅 ' );title( ' 还原信号 ' );. M% e4 H& H. y3 a
subplot(313);plot(t,er);xlabel( ' 时间 ' );ylabel( ' 振幅 ' );title( ' 误差 ' );
5 ]8 ^- a/ D; \/ ?! g% End Script
$ N7 h5 i6 ^0 M2 I6 x* t, C
2 X: t5 b7 x- E+ V5 i4 e: i! i; V/ s3 c3 ~3 b
0 k1 L& T$ D [0 w. @( C4 J+ G( X! g3 c- n/ G7 ~* V, ]$ H
误差er的数量级为
,误差绝对值的最大值(
)如下图: % V" C; M* }1 \6 {: _$ X
. z. |( p5 `! L* Y
& q! V% U1 }6 p( k. d, H
, V; U3 S+ ?4 a9 Z
, |9 D2 ^- @3 p" I0 i$ a
; I* \& w0 D. r) D/ M) b
% M3 H. [$ Z! G7 w8 G! n7 W" P! ^, s _6 r. d- p# {: H
|
|