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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
: u- ?) _* C" E
目录2 d* T+ Y( H* l  Z1 d4 v
# v4 W: v. X4 P) |7 J. c
Syntax! J0 R6 X; i' G
/ B6 ~+ k8 S# _9 r, |% p! T1 }- y9 `
Description! n) j6 d  _- z3 }/ e$ S" J5 m
. r# a. F2 U, Q/ |* E2 o% N9 k
       Y = fft(X)# J9 f- ^- t; h
$ K3 J: w  X) g. W+ S6 y: \
       Y = fft(X,n)) j2 f6 R: q  c+ L2 o$ m: |0 s& Z% a7 h

* Y' u( B, a% M* J5 j: U       Y = fft(X,n,dim)
* ], B" C: x4 x: _. X/ K$ \9 P+ n: a$ N* A1 }
Examples8 J! x& W6 w5 S$ y

- y, ~' ~* U7 r       Noisy Signal* E  k) n; i! D& ^5 G

# H8 }' n5 u4 q! O% Y
% }8 t/ e8 B$ Z) Z9 C

) \, g* g3 B0 J3 G$ T/ F

4 r3 s. T  @9 m5 Y( m3 d6 g' cSyntax1 `' w  G) n" |' o  B
, A4 C, F5 y3 |6 `4 W0 m
Y = fft(X)
1 Q' q$ t" }+ x
( }6 A# A2 V  Q. _2 ]8 S( ZY = fft(X,n)% e2 L* I& H% `' J
6 `+ e) {0 i) P: c
Y = fft(X,n,dim)
( x3 E' [. l" ^: `9 a& X7 v
  g4 ]( a7 E2 Y3 A3 Z9 [  C& S. ~: {/ D& h1 k- b$ I
Description
1 i9 s% {5 W( t1 ]9 \" {
  L+ S% P$ L  `5 P
Y = fft(X)
7 O2 C$ c* L/ T3 k5 d
" ]/ \4 f( U2 F/ |6 j% F) d
Y = fft(X) 使用fast Fourier transform(FFT)算法计算信号X的离散傅里叶变换:
/ u0 L) N' T- H6 l0 y6 F! M0 Z: s- ]. H
  • 如果 X 是一个向量,那么 fft(X) 返回向量的傅里叶变换;
  • 如果 X 是一个矩阵,则 fft(X) 视X的列为向量,然后返回每列的傅里叶变换;
  • 如果X是多维数组,则fft(X)将沿大小不等于1的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。" O% I# e# W  k% m
  X4 w/ \% L* e* i% \

( h& R  W- O- a  [  j" I0 H: G3 s
% {! A" q$ V5 S$ uY = fft(X,n)
& U. g; a6 H  s( l5 g2 c) w

1 }9 i1 [7 H1 e( J4 G) i- q5 S- C
6 V5 ]6 o/ l9 f7 `+ k1 F
Y = fft(X,n) 返回 n 点 DFT。 如果未指定任何值,则Y与X的大小相同。) W9 R4 q0 \( }7 \

+ o/ j+ e  }8 L. V
  • 如果X是向量并且X的长度小于n,则用尾随零填充X到长度n。
  • 如果X是向量并且X的长度大于n,则X被截断为长度n。
  • 如果X是矩阵,那么每个列都被视为向量情况。
  • 如果X是多维数组,则大小不等于1的第一个数组维度将被视为向量的情况。
    " L* r0 b4 m' G/ y8 p9 Y' H
% T  ^& z% g2 l$ b; k# K9 l

  G4 S( @2 J5 ]; D
& z: A+ d) ~6 xY = fft(X,n,dim)
  ?6 r& u5 m- O+ C( y  t6 }& x/ [

, S. w5 @& ~& p( U: y% \( S8 dY = fft(X,n,dim)沿维度dim返回傅立叶变换。 例如,如果X是矩阵,则fft(X,n,2)返回每行的n点傅立叶变换。
0 d1 w$ j# q" y( ?' ~$ b1 \0 L0 b; J9 F' A

, ^) D2 E' r- U- p+ u' RExamples

7 d# w( b, k: k# `9 J4 s0 C" J2 r7 h* I* R- `
Noisy Signal
3 [  d' u9 w# {- c# x5 Q/ |5 p9 L
: n0 h; C% v, h7 V+ H3 |+ y  Q
使用傅立叶变换来查找隐藏在噪声中的信号的频率分量。
! S% F( E0 I) y) U& D
/ N( K+ N: b) g* v3 F+ x指定采样频率为1 kHz且信号持续时间为1.5秒的信号参数。
  X/ ~  A* z! {* W3 B8 d3 |/ a) ]9 D3 B4 z# q
  • 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)|')
  • 5 {! i7 j* s% O6 v
            : G4 r3 N( Z. I" R& \+ E
* x/ R3 O  t3 ^3 H7 B1 \
figure(1)是加上零均值的随机噪声后的信号时域图形,通过观察这幅图很难辨别其频率成分。
! M/ D; u/ B* x8 {8 e3 }% N- H7 d/ C- l* P9 t3 ^9 M  A& m
9 V5 v1 x! z' e9 t
  c0 x) j( ]  j( D6 d4 h# d
figure(2)是X(t)的单边幅度谱,通过这幅图其实已经能够看出信号的频率成分,分别为50Hz和120Hz,其他的频率成分都会噪声的频率分量。5 a, t+ D: P; T# O. w& Z, h0 c* g
* ~" P& c. N# v3 E
" A% V1 d$ m$ W! E7 ]
1 B/ T$ h: [& _$ q0 \8 P- h- Y
figure(3)是信号S(t)的单边幅度谱,用作和figure(2)的幅度谱对比,原信号确实只有两个频率成分。" o: Y& L5 c  r" ^* D

; g# {9 q8 _2 M! s( A$ o( S9 x) \

0 O% {* D& L6 B( W# f. L
2 k0 ^& Q; |/ \8 j' y: J上面三幅图画到一起:
6 A- g3 C- `" v( N3 e  n
$ L( L* Q  M! F& a* @' U) P
9 l( R- j# p" A* ]. d

6 g9 F- S% I7 L' I, D. k5 w- u/ \8 b% s

1 n6 K( j( B# r4 g: S7 ~
. }2 z: S6 H0 F7 q- ^
  • 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-29 22:15 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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