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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

, E9 C6 f$ O3 ~" T* ?目录7 Q+ F- J6 ~6 C5 M
9 F/ D1 e  _6 _1 [/ }
Syntax  e( \. U& r5 E# h! r
5 K! K% W3 H. Y9 V6 U
Description
, R$ U' H6 H( M. q' M7 h2 w4 ~( D1 i0 c. d1 w9 M/ T( e
       Y = fft(X)
, u4 `  B8 U1 z. y& v) @! {+ x1 l" \. }& a5 G& W% D
       Y = fft(X,n)
3 Q; ^6 i" ^& v) c4 x. \/ E; O8 i! R! u9 `8 P4 {7 T1 J% J
       Y = fft(X,n,dim)& j) J9 Z: u7 ^
$ L! e, O, @) j% j
Examples& m, @7 N. ^8 B2 X! r

, z4 y. l' i' ]( }' H       Noisy Signal/ H& ]8 M" l7 D, C0 Q3 G, v! `
+ ]9 \9 C8 k2 x" e2 {  u. h/ U

7 F& w+ Q5 u- E) b
* o5 R9 a  }2 {0 n% }) N
+ ]# \  L0 a5 M
Syntax
6 B- e# q' _5 X2 u5 ~$ ]8 M) Z& o; ]% {$ F" L/ t+ c
Y = fft(X)$ H7 j3 A; g' p$ Z) @- _! ]8 U

5 @0 {7 ~7 G& M; ]# L- F2 I: gY = fft(X,n)9 A. r  @  u- x1 [+ {; B
; J" p9 G7 C/ K. p. O& L
Y = fft(X,n,dim)
9 {8 a' k, X+ X
2 ^* k( `0 v/ H# C/ M, H9 H$ V
6 o/ K+ `- w. W  O  z# }Description

! H+ c& h  O1 d* U/ W. G" p2 S3 C; q" |, D8 `' u8 b' m8 n% n
Y = fft(X)
: X7 T1 \! y. l
% e, ^' ?5 U; O* @( |
Y = fft(X) 使用fast Fourier transform(FFT)算法计算信号X的离散傅里叶变换:0 Q1 C$ ]6 g$ q4 }* _

4 M+ g! L+ _, Z/ _2 M3 M! }. I3 V
  • 如果 X 是一个向量,那么 fft(X) 返回向量的傅里叶变换;
  • 如果 X 是一个矩阵,则 fft(X) 视X的列为向量,然后返回每列的傅里叶变换;
  • 如果X是多维数组,则fft(X)将沿大小不等于1的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。* V! P: ~$ Q3 K% g' f0 l; Q) N

" c4 o! l* @* c" F6 T) x1 r5 V6 Q

& \% ?1 O( w& z7 U  H3 q4 k
" F% ?4 Z" @2 R: S& ^Y = fft(X,n)
7 N4 _( Q. x6 [- v+ r6 z7 e

* \5 \- a' f# R

+ R8 O9 _1 |& TY = fft(X,n) 返回 n 点 DFT。 如果未指定任何值,则Y与X的大小相同。
6 T' }: ^- _5 U4 p: h7 U; P
; a9 @. l/ t1 j0 H; x, Q9 h
  • 如果X是向量并且X的长度小于n,则用尾随零填充X到长度n。
  • 如果X是向量并且X的长度大于n,则X被截断为长度n。
  • 如果X是矩阵,那么每个列都被视为向量情况。
  • 如果X是多维数组,则大小不等于1的第一个数组维度将被视为向量的情况。% m+ l+ p" f% M- y: S

# ]+ x) l( ^4 V5 _5 x2 h, o

9 g7 q! ]; i+ _' F+ b3 S+ y+ T& h) u: [* w9 H$ n; i2 V) O' H
Y = fft(X,n,dim)
* o  U  h: o; F5 J5 K4 [! o

, R* [1 X$ I' R- X+ AY = fft(X,n,dim)沿维度dim返回傅立叶变换。 例如,如果X是矩阵,则fft(X,n,2)返回每行的n点傅立叶变换。
- b6 j1 s/ o6 P/ y1 {/ E
) y9 _1 C& b. m8 f+ K, R
& [6 I9 i* R/ @0 g  c! tExamples

5 I, t6 C; I' u+ D. U7 M2 J, ~
7 b7 ]+ M4 }7 R' f# z; RNoisy Signal
2 [: J- M6 m  \
: P$ h- m0 U; u0 i! Y4 i
使用傅立叶变换来查找隐藏在噪声中的信号的频率分量。: r( d" _' L8 V3 u* H- h

: T0 R7 A  h' j+ n, c% T% w* @" b指定采样频率为1 kHz且信号持续时间为1.5秒的信号参数。2 z3 v3 m& u0 _# k' ?2 l- I

: E& T: n9 g1 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)|')
  • ! S9 Q8 W0 S9 U- f- u
            # Z: j: h0 T+ j* K

; u( o* ^4 G* M3 ffigure(1)是加上零均值的随机噪声后的信号时域图形,通过观察这幅图很难辨别其频率成分。
1 z. d3 c7 H3 L3 U6 a5 L* d! m- b+ I5 W- i2 ~2 |

* m- Z0 B% i1 Z3 b" {% q! B& @
# r' a0 e  U" [' [% o8 efigure(2)是X(t)的单边幅度谱,通过这幅图其实已经能够看出信号的频率成分,分别为50Hz和120Hz,其他的频率成分都会噪声的频率分量。7 s' j3 [, T1 C( i3 y1 `. I

3 `- p( E6 q& H2 H) M3 t* \5 |

) A0 l* {4 }! w
1 Z& `7 d7 X; Q. i0 i+ Jfigure(3)是信号S(t)的单边幅度谱,用作和figure(2)的幅度谱对比,原信号确实只有两个频率成分。
4 n& U$ u& w  j; H  Z/ t; b! Z6 a
5 \3 A: m& l% V. t

5 T9 ~9 e! j& u) t( D  v
# T1 w7 z* O- P, ~: t上面三幅图画到一起:
! A5 H8 {' g9 X9 j" N3 Z" _6 |, W: C5 P! l7 G; @

& }- f# J$ C! ^* d
) _6 _' `4 M2 N2 {1 t0 R8 r4 ~) F4 h
6 p7 i% ?# B$ }/ G
0 b4 j9 j8 `3 C( Z# p

3 @. h6 I, _" D+ L' I& U
  • 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 23:08 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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