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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
/ r" ~; g( q; {4 ]
目录
5 R3 \2 r1 k: h& \! _8 A, v) v8 d# b' U+ O  m( @- m8 U3 I* _# {$ U2 |
Syntax
% R8 B4 H% g) @& O$ L- L- H3 A
. B" G% n: w2 u4 t- U5 kDescription
8 P6 W! q' a2 ?, q; }$ p2 d4 c' t1 `1 i8 [
       Y = fft(X)
) u4 @3 Z8 w( a- O) h+ P
1 _* d/ I' \; q' ]! I6 ~" p: W  N% r; i& i       Y = fft(X,n)0 ]# K  D% D- s6 j7 a. {/ y9 `

8 z# O+ e% j6 M/ u       Y = fft(X,n,dim); [. ^, A; C; b1 g& O
! H) L! O+ W2 ]" [' ]) P
Examples& e; k: E( ~$ h

% E' f. y/ `) k- X' p8 c; Y2 Y& w! c       Noisy Signal3 u( h' @7 \" @" Y. P1 g$ }* l: A

! H  K! O" l0 n5 g! a! z& |+ G/ @. |. \6 K* {# P2 N
$ v3 d0 w% [4 Z) A" F
) e5 B2 K& P2 Y; r& U" ~0 J3 z4 |* i; Z
Syntax/ @7 R1 D. w: S1 c) G

& Y( i, ]- }1 V$ V: t' b3 w- F. VY = fft(X)8 P- X8 U! r5 s. o; p; `
" w  Q# q. b9 |" P
Y = fft(X,n). B, Q6 }5 d) K& }
  H; U1 W/ |' ~+ H
Y = fft(X,n,dim)! c) o. I2 o- r, f1 }* ^$ \  X

/ S6 I5 [  @8 \, p
5 F6 V' c: P: V' cDescription
7 k# V$ b! R2 `" t% x( f3 K$ W
+ t9 b% N+ R# W  J' M9 m
Y = fft(X)

" f* j6 C+ V: Y/ k( S8 Z9 S3 ?$ g. k; G9 o+ U2 j; J" F
Y = fft(X) 使用fast Fourier transform(FFT)算法计算信号X的离散傅里叶变换:1 n+ ~4 d9 J; c- I3 q1 d
. W9 U' c' j+ a: `. r: v! H
  • 如果 X 是一个向量,那么 fft(X) 返回向量的傅里叶变换;
  • 如果 X 是一个矩阵,则 fft(X) 视X的列为向量,然后返回每列的傅里叶变换;
  • 如果X是多维数组,则fft(X)将沿大小不等于1的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。  v; x+ I. Z! |. Q  a
1 S& f3 p) O& h* k8 s

2 N+ M4 q" W4 e" l2 W! U( N: `2 C4 ?" r* Q4 I- Y
Y = fft(X,n)# O9 \+ j5 _# R( V
, d5 Z! t3 H& E, y1 K5 h

6 d; M! x2 o; P) ]; j9 \+ GY = fft(X,n) 返回 n 点 DFT。 如果未指定任何值,则Y与X的大小相同。
( N. Q% A" v7 T# |* }: r! G$ G0 Q! m, O# v% q, l
  • 如果X是向量并且X的长度小于n,则用尾随零填充X到长度n。
  • 如果X是向量并且X的长度大于n,则X被截断为长度n。
  • 如果X是矩阵,那么每个列都被视为向量情况。
  • 如果X是多维数组,则大小不等于1的第一个数组维度将被视为向量的情况。0 w$ e/ L" Z4 E% D! {

/ s- [1 y: p) J1 p

! g  @* C/ c' [9 d9 g& {1 t/ o* }5 C# c! r: e6 Y
Y = fft(X,n,dim)

$ ^7 Z& t& f0 }9 x/ r9 ?/ u- H- w1 }+ V) G/ O6 y
Y = fft(X,n,dim)沿维度dim返回傅立叶变换。 例如,如果X是矩阵,则fft(X,n,2)返回每行的n点傅立叶变换。
7 b4 E; Z3 s9 \1 m7 W* g& ]9 u9 {  E* W" k& y: l- {

( e* V& E/ R3 e6 XExamples

. m& g; D- r* ]6 S% |# L$ Z6 u$ O
0 f/ e0 h! A% b$ r  O& ^) h* uNoisy Signal
* ?& P6 a5 u+ b7 a- k* c
. H) l7 d; z& k5 w6 M0 u
使用傅立叶变换来查找隐藏在噪声中的信号的频率分量。* _3 B5 i2 }$ @0 y

% S' I- E6 m6 f. ?指定采样频率为1 kHz且信号持续时间为1.5秒的信号参数。/ [2 t, Y9 u6 C% K& f8 O7 Z( y3 g
; T& k* i% T1 W: H
  • 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)|')

  • 9 J$ F0 I9 u, u: e
            
( C' [  P, z0 A7 Z. K3 j: A
# \; ?, e7 a% V7 P4 Gfigure(1)是加上零均值的随机噪声后的信号时域图形,通过观察这幅图很难辨别其频率成分。' t$ C* ?+ c( z1 u

3 |* O" s0 l+ W+ {

0 D8 D: f8 C/ }6 c  U2 E' l( |
/ `. C6 |4 U3 E( @- K* V+ \  \figure(2)是X(t)的单边幅度谱,通过这幅图其实已经能够看出信号的频率成分,分别为50Hz和120Hz,其他的频率成分都会噪声的频率分量。& L: h. D0 ^1 l

: r5 E7 L1 @, ?' B, s+ z
) F+ V  h. Y! p$ c7 [+ b3 `8 E& g

* {8 M; `" q5 V. k; v0 w/ R0 v6 _figure(3)是信号S(t)的单边幅度谱,用作和figure(2)的幅度谱对比,原信号确实只有两个频率成分。* V1 m) G, E' v

% }8 K, T* Q0 Q/ |9 A2 o& S& ?% A
' x" x! j9 y4 o: j1 W

/ I! l- F2 G9 d2 x7 C上面三幅图画到一起:
7 {. F4 M6 o) a2 _% v# r( |3 W" m7 }

* H  w4 x3 N5 q' m  a6 i: y, F, {+ S! @3 @: e

' C5 \, C  O6 y3 u; q5 v2 s

8 }% f1 a4 C) t/ D5 v
3 c/ C9 E. u* ~0 A
  • 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:47 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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