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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

% t/ r; T& K9 Q, h5 W# r6 a目录) [2 U5 w" |& E. N9 Z5 B

+ z( J7 e6 ]: y+ D3 O. J0 rSyntax
" F: p, `4 L, f9 ~% O
5 D' y6 k' h4 f$ e& K& Q( k2 |$ u( R1 PDescription
/ k! F$ w) _7 t  y) {/ y: u. @* @9 j2 z9 X$ W. j$ h8 {" y5 p
       Y = fft(X)- R  [) c7 N6 a
, ?' B2 e: o+ J* q7 i
       Y = fft(X,n)
% O+ V, }( V8 L1 U, U5 e* A
& k0 P& r5 G0 z1 E$ f0 i       Y = fft(X,n,dim)- j: s' W8 m8 n8 O. T; E
6 c" I" ~; x' F7 y3 T9 _* |
Examples
6 R2 C) o0 N  r' L( s0 d: _
) q" y/ U# f& ^1 x# \9 A* L- |, x       Noisy Signal
# _* |& X0 S* S
0 V- O5 S# P! z/ H
7 ~4 P/ F9 s" r) O/ I  M

2 x# m2 {3 C1 u! G! v

$ h0 o7 ?% z# F# A% `+ b8 KSyntax% C! `, Q. O$ z5 x8 e

1 u- e& s! q4 ~$ I- Y2 AY = fft(X)& b# g; D$ M  S1 M" x

$ q" ^; w  E9 L1 q& ?% m2 [4 XY = fft(X,n)7 J! |4 Y, B2 w; q

  D, U: [2 {5 @Y = fft(X,n,dim)0 t% d1 K. N3 f6 N
8 B  |- G. I' X
/ A$ Q1 v0 V/ C% U, E7 d. c
Description
9 g& z( M% {( T- Z* G8 p
4 f0 \) k+ g. z! i7 p# q8 O
Y = fft(X)

/ Q; R0 T; q* y& I6 f' R4 h
( U' M2 E3 i1 Y: t; A5 M( nY = fft(X) 使用fast Fourier transform(FFT)算法计算信号X的离散傅里叶变换:+ c7 N4 i9 i5 f; ]( U" w& t, }( l* X
, b/ v, [0 K3 w: R4 ^& N! ~1 Z0 F
  • 如果 X 是一个向量,那么 fft(X) 返回向量的傅里叶变换;
  • 如果 X 是一个矩阵,则 fft(X) 视X的列为向量,然后返回每列的傅里叶变换;
  • 如果X是多维数组,则fft(X)将沿大小不等于1的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。
      q) ~  P' K- Q4 e$ `! M

- l: b. n' I' L' d# n

* Y8 t4 e0 G! r6 y* r; t9 ~6 z6 w) D1 M: U
Y = fft(X,n)  \2 s$ s6 m4 l4 V, s' u: R! M

% R7 l* p1 E* |, d: D" [. S
6 G6 ?2 P' k& _5 M6 A; R- i" ~, p" ]
Y = fft(X,n) 返回 n 点 DFT。 如果未指定任何值,则Y与X的大小相同。
3 X3 s. S* s; E. V& }8 Z3 L& u
% y; o/ {  z* m# J, H) C% p% t
  • 如果X是向量并且X的长度小于n,则用尾随零填充X到长度n。
  • 如果X是向量并且X的长度大于n,则X被截断为长度n。
  • 如果X是矩阵,那么每个列都被视为向量情况。
  • 如果X是多维数组,则大小不等于1的第一个数组维度将被视为向量的情况。! B9 {) Y% t4 `9 k" k2 o

( q( F3 a$ o8 v+ ?
% }) [' N/ e2 {# H
" n0 l# L4 u! f$ I' k
Y = fft(X,n,dim)

4 M: }( F& x& g1 ?8 S3 f" @( P  s; w; ~2 w
Y = fft(X,n,dim)沿维度dim返回傅立叶变换。 例如,如果X是矩阵,则fft(X,n,2)返回每行的n点傅立叶变换。
$ V) b  \& U. I+ r! ^9 t2 s
! O$ U8 m) f+ v5 \$ [6 \, r+ u) u! w9 n# J
Examples

& q- R; Q6 b+ Q" f2 S. V% p6 R6 V% x) g1 o5 W: L9 t' x
Noisy Signal

' U* r1 S0 B( [0 c; U: V6 T3 Z1 J; ~( [/ G1 W1 O' Y
使用傅立叶变换来查找隐藏在噪声中的信号的频率分量。! w/ i( T0 E2 Q$ a# P3 ?

& l) x+ ~4 j" ^: g指定采样频率为1 kHz且信号持续时间为1.5秒的信号参数。4 H- H" h7 M- ]/ d
2 H* C# T0 V) V0 E
  • 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)|')

  • 3 C3 U( A7 _. H9 O4 h# D+ R$ [
            / c4 X$ G# M* L3 Y9 N  e/ B6 ?
- O1 O# u) U) O' ^
figure(1)是加上零均值的随机噪声后的信号时域图形,通过观察这幅图很难辨别其频率成分。5 x+ |# ]) M7 q6 n4 E
2 F+ z$ ?7 i) p% h; e  d
" T$ I/ [$ m7 @" V4 }. f) i! v0 A) v

1 Y3 B  n3 T: Z! K$ H2 v7 b7 tfigure(2)是X(t)的单边幅度谱,通过这幅图其实已经能够看出信号的频率成分,分别为50Hz和120Hz,其他的频率成分都会噪声的频率分量。; _' ^. s# V8 U$ T6 _1 k: F' ?
8 l4 D0 j( Z; ]8 _* D) c- \9 g

& u* v: B" T" ~: J* [* L/ o$ s, m$ V4 q4 o& e
figure(3)是信号S(t)的单边幅度谱,用作和figure(2)的幅度谱对比,原信号确实只有两个频率成分。
, [* B5 B- \) m) _( |4 I2 G( L. q8 R7 j* S4 P
  g$ H' y* C0 j& |

! w5 _7 o! u/ A  T" L& \上面三幅图画到一起:
+ I$ G$ M7 s$ w, c# C  ?: L( l
  b+ h0 l7 Y2 X/ L1 q. y4 W
: l' B* X* w; i& K; c# h5 v

9 t  R1 A) y* h6 _) d4 {) }! @! R; W, r2 e4 O9 Q# y
1 V4 q/ \6 `5 L, r. R
- i; @0 V8 n/ Y; D
  • 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-10-5 17:44 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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