找回密码
 注册
关于网站域名变更的通知
查看: 593|回复: 2
打印 上一主题 下一主题

MATLAB —— 信号处理工具箱之fft的介绍和相关案例分析

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-11-20 10:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

. j3 @: l1 E3 n* Y# H/ E目录
9 a! j$ _$ h2 Q  v
( n+ u+ N+ Q! |0 k# m9 XSyntax* m& i( o$ j+ P( f' E% y& E1 X
8 p7 T$ V' O# k. n0 G8 M- D
Description4 }1 O- d) H; ^) P  g# \

1 T+ Z; A# o2 h2 _       Y = fft(X)
% r/ p3 k: y7 @* g0 W
* Q7 K2 u* g& B2 l6 O       Y = fft(X,n)
) J6 V1 b% m# e8 a) g6 Z4 r1 @" x6 |" J* _2 G
       Y = fft(X,n,dim)  W+ V* ?, v8 n$ w5 j

5 r% a+ y$ {0 ~* _  {Examples: c+ Y9 `7 L+ |& v

% B( g/ v/ b4 V       Noisy Signal
& p8 k+ n! `9 m( ^! u0 r3 H' ~! z, T6 _5 m& a" C' r
% ~- ]- N6 @- Y0 [8 r8 g) r
0 ^. |' k: P( R5 O" F$ H5 ~5 d5 F

4 O$ O* a5 b# W$ h7 {$ \: F" ISyntax
! f) c  P( J& s6 [- E2 F2 Q" H
% f/ t6 m8 n4 F9 I) n) X+ a! F+ hY = fft(X)
! ]) X! E. g% l9 G4 J& Y3 @# e1 v0 k/ z+ i3 h; }5 z' T) e
Y = fft(X,n)
2 ]% Z! I  M! l! d6 _. h" M/ k0 M7 P$ r6 T7 C2 Y
Y = fft(X,n,dim)! w. G% b6 N, |  {; L! s% L( o
  G% g9 e" D1 E% L" p( X, d
. s7 O* H$ N: n4 d! h
Description

! ^6 R" q& L7 p% l9 f
5 B# N0 x& X( p# c! \2 q4 CY = fft(X)

9 \$ g3 F4 v9 Y" {( g& Y% i6 n- e) {- Q! @1 q& i% S
Y = fft(X) 使用fast Fourier transform(FFT)算法计算信号X的离散傅里叶变换:
* J% e+ [# @+ a0 h5 H- Q9 w
# R  N- ?9 J% O9 O. x
  • 如果 X 是一个向量,那么 fft(X) 返回向量的傅里叶变换;
  • 如果 X 是一个矩阵,则 fft(X) 视X的列为向量,然后返回每列的傅里叶变换;
  • 如果X是多维数组,则fft(X)将沿大小不等于1的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。) z# y9 e8 ^& i9 V% s5 E  t
" \' X. d/ H. e- R6 _1 }" N! \

) n" X; Q% m! _5 V9 G1 u2 |, ^/ G
  j# K1 H% ~1 i& H. g' M$ c7 dY = fft(X,n); O  e8 b$ @; ~1 }2 l
. Y; d+ i. C/ Y6 ^6 f; [+ V2 V

% c+ s  L% s4 g- U. C* BY = fft(X,n) 返回 n 点 DFT。 如果未指定任何值,则Y与X的大小相同。( |( O( m; l& {: w# p( D3 z
4 k7 \; {% ^: Q5 w
  • 如果X是向量并且X的长度小于n,则用尾随零填充X到长度n。
  • 如果X是向量并且X的长度大于n,则X被截断为长度n。
  • 如果X是矩阵,那么每个列都被视为向量情况。
  • 如果X是多维数组,则大小不等于1的第一个数组维度将被视为向量的情况。3 Q* n) `# m  o* U

, O+ O$ ^6 M9 z! a, W2 w% U
* r: F6 q# w  i$ |2 l( Q! D( k6 C
: ]) z4 t$ H) f% V; u
Y = fft(X,n,dim)
' {/ }2 ~5 ]+ P

) `6 V) V* z' |& Q$ m' X/ DY = fft(X,n,dim)沿维度dim返回傅立叶变换。 例如,如果X是矩阵,则fft(X,n,2)返回每行的n点傅立叶变换。
. Y; Z' x1 E0 C) p1 H  {  G6 p  \. j5 k' E
2 U: g6 ]. _+ |  a5 U: `
Examples
+ v; K7 B4 x( w
8 v! ~* C. a( B% N' }* X$ j
Noisy Signal

8 G: g1 n# \7 I4 L9 b4 X
' u$ z1 Q; n) K0 S& A8 n) `1 r* y使用傅立叶变换来查找隐藏在噪声中的信号的频率分量。* p, R9 R* _9 k7 ^  q7 ?8 A

9 T4 T. |5 X9 k指定采样频率为1 kHz且信号持续时间为1.5秒的信号参数。
6 v/ E' ?  \8 Y* T) i) U$ ~) ~3 l) O8 [- W# u
  • clc
  • clear
  • close all
  • % Use Fourier transforms to find the frequency components of a signal buried in noise.
  • % Specify the parameters of a signal with a sampling frequency of 1 kHz and a signal duration of 1.5 seconds.
  • Fs = 1000;            % Sampling frequency
  • T = 1/Fs;             % Sampling period
  • L = 1500;             % Length of signal
  • t = (0:L-1)*T;        % Time vector
  • % Form a signal containing a 50 Hz sinusoid of amplitude 0.7 and a 120 Hz sinusoid of amplitude 1.
  • S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
  • % Corrupt the signal with zero-mean white noise with a variance of 4.
  • X = S + 2*randn(size(t));
  • % Plot the noisy signal in the time domain. It is difficult to identify the frequency components by looking at the signal X(t).
  • figure();
  • plot(1000*t(1:50),X(1:50))
  • title('Signal Corrupted with Zero-Mean Random Noise')
  • xlabel('t (milliseconds)')
  • ylabel('X(t)')
  • % Compute the Fourier transform of the signal.
  • Y = fft(X);
  • % Compute the two-sided spectrum P2. Then compute the single-sided spectrum P1 based on P2 and the even-valued signal length L.
  • P2 = abs(Y/L);
  • P1 = P2(1:L/2+1);
  • P1(2:end-1) = 2*P1(2:end-1);
  • % Define the frequency domain f and plot the single-sided amplitude spectrum P1.
  • % The amplitudes are not exactly at 0.7 and 1, as expected, because of the added noise. On average,
  • % longer signals produce better frequency approximations.
  • figure();
  • f = Fs*(0:(L/2))/L;
  • plot(f,P1)
  • title('Single-Sided Amplitude Spectrum of X(t)')
  • xlabel('f (Hz)')
  • ylabel('|P1(f)|')
  • % Now, take the Fourier transform of the original, uncorrupted signal and retrieve the exact amplitudes, 0.7 and 1.0.
  • %
  • Y = fft(S);
  • P2 = abs(Y/L);
  • P1 = P2(1:L/2+1);
  • P1(2:end-1) = 2*P1(2:end-1);
  • figure();
  • plot(f,P1)
  • title('Single-Sided Amplitude Spectrum of S(t)')
  • xlabel('f (Hz)')
  • ylabel('|P1(f)|')
  • + T' z1 Y# j# X- h/ h! b$ G9 `( O
            9 O5 @- E6 S( x$ A! K5 `) b
4 a% `' I6 f" K9 w) T$ h0 g/ Y7 ^
figure(1)是加上零均值的随机噪声后的信号时域图形,通过观察这幅图很难辨别其频率成分。4 M9 f& l3 _; B# W/ m- w
% S- E; y" q9 f, N% ?; F
7 b# |' d  x5 w0 X1 B

' T! w' m7 W4 N# kfigure(2)是X(t)的单边幅度谱,通过这幅图其实已经能够看出信号的频率成分,分别为50Hz和120Hz,其他的频率成分都会噪声的频率分量。9 C+ ]& T. Q' t

: r" I9 H& z( C$ P& Q

' J& w% u" z& P6 Q6 A' {" L
# Z; M2 ~7 O5 p+ }: [$ i0 Hfigure(3)是信号S(t)的单边幅度谱,用作和figure(2)的幅度谱对比,原信号确实只有两个频率成分。5 H7 h3 B3 T' x  f8 {* y* @* w

! i# r% ^; A% Q7 K$ ~/ h

' p6 d3 Y7 Q0 ^- X& @
0 ]# s* {! S$ I上面三幅图画到一起:* f) Q6 }0 s( W+ a8 a' R
) ~: T& b3 _1 ]$ y; D5 T) f
% q* D+ \' F! `# @* y1 }+ V+ V3 y
6 o% V: H( ]; j6 {' Q  C! K
& m7 d9 O! h( g' z- v. I7 |

. C9 O8 Z7 V6 A( P) d, _
" S* b# K- E  k/ W
  • TA的每日心情
    开心
    2020-1-17 15:01
  • 签到天数: 38 天

    [LV.5]常住居民I

    2#
    发表于 2019-11-21 15:55 | 只看该作者
    在信号处理领用  matlab  仿真用的多吧。。。。
  • TA的每日心情
    开心
    2020-12-3 15:53
  • 签到天数: 38 天

    [LV.5]常住居民I

    3#
    发表于 2019-11-26 18:03 | 只看该作者
    看看 ,学习一下
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-23 19:07 , Processed in 0.156250 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表