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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

2 t, e8 `  [3 w6 u0 c+ I目录
/ O: P, x+ S- }5 W# q6 ?4 i& t4 y1 w/ ?3 o9 z) _
Syntax- a3 v& e" X' Y+ b, T8 b* [" o

, O4 F2 ^; S" J( T# yDescription
' O' a4 X# `& V' m2 ~+ L7 c0 r: t$ D' _5 Q: }2 J. l$ H8 A
       Y = fft(X)# n+ H! }2 a2 ?- r8 {

+ \4 @& [8 W+ S2 v       Y = fft(X,n)
. A/ i  c" i3 [/ I
! s4 B+ Z4 L( H) e& d# P+ c/ _' |       Y = fft(X,n,dim)0 Z1 X7 D, U, p' j8 N$ @# i3 ^. m

' U, x3 \; W- @. [/ u3 S) X+ ~Examples
7 O, K$ G3 a& k  n$ Q5 f8 `
( K1 ~1 o7 @" A  ~* A7 r* N       Noisy Signal( ~5 [$ q! c8 [5 S6 g* y2 O- ^

& M8 i/ W* U) o1 Q) y0 R
- Z" i7 u9 G" J4 e0 \6 i6 `

8 P3 X6 @$ C0 Y! ]$ Y

/ n( E1 i  f( C( K7 p( A$ wSyntax
- x8 L; k. w7 e8 `. @% a9 a
/ f; k5 o: s5 U$ b  ~Y = fft(X)
$ Q, p% l* s8 a( N, z
8 G; g9 X" m: q! OY = fft(X,n)
! C$ o( w$ C1 H  b$ g1 V1 I% ^
5 w; S5 N  P3 d! [* w5 uY = fft(X,n,dim)
. [$ \& O- ]  `0 H$ \* q0 W9 k0 |! o5 F. h6 L$ t  y

5 I1 ^  ^5 `4 |# YDescription
2 L* ^5 n) i% Q7 z

3 W4 D: z! {5 {: z/ D% i3 tY = fft(X)
# u9 V$ w" x: k+ m
( h. C# l% m+ p/ X
Y = fft(X) 使用fast Fourier transform(FFT)算法计算信号X的离散傅里叶变换:
/ g  c8 _* }/ y$ T- M$ S1 h1 B" t
8 }' ]  v4 T/ E! @2 S
  • 如果 X 是一个向量,那么 fft(X) 返回向量的傅里叶变换;
  • 如果 X 是一个矩阵,则 fft(X) 视X的列为向量,然后返回每列的傅里叶变换;
  • 如果X是多维数组,则fft(X)将沿大小不等于1的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。+ F3 y0 {+ s9 P7 `' G3 U7 j0 Q

/ {% x5 c2 c$ [7 C( N/ _1 l4 Z

7 g+ `  a9 t8 ?+ ]9 w/ v: E, i" r$ @  K( ~
Y = fft(X,n)" r0 S1 l' u! m* B: |" y

: J) G7 u/ c* l

  q  g3 G# @& jY = fft(X,n) 返回 n 点 DFT。 如果未指定任何值,则Y与X的大小相同。
7 z9 b7 O3 B" M! o) G' I
5 v1 P6 C) y6 E4 [3 N% X7 X
  • 如果X是向量并且X的长度小于n,则用尾随零填充X到长度n。
  • 如果X是向量并且X的长度大于n,则X被截断为长度n。
  • 如果X是矩阵,那么每个列都被视为向量情况。
  • 如果X是多维数组,则大小不等于1的第一个数组维度将被视为向量的情况。9 d1 E1 V8 V+ \6 f4 j: y
# k5 @0 _4 n+ z

6 ?  {! {# m# E6 Z8 Y- o' @8 U# c% P( g+ Q
Y = fft(X,n,dim)

' I+ O3 _5 p- G8 P$ I8 M1 k- ~/ m$ h0 D& V6 z; Z' z
Y = fft(X,n,dim)沿维度dim返回傅立叶变换。 例如,如果X是矩阵,则fft(X,n,2)返回每行的n点傅立叶变换。! s7 h! `8 c) L# f- q2 Q9 q
4 [2 f( M% q' _7 x0 X( Z8 K- ]
, @1 O5 D9 ^4 B* F
Examples

7 v& [" }( @  C, g8 [6 P
( P$ I- i% S2 l& uNoisy Signal
; v7 ^* y5 D$ ?" O) l

, _: a5 \) g1 f( \5 P% h' {! b使用傅立叶变换来查找隐藏在噪声中的信号的频率分量。
- S/ u1 o+ n1 n7 q" c6 D1 _* b5 m  z* ^+ z7 \7 _6 k  \
指定采样频率为1 kHz且信号持续时间为1.5秒的信号参数。& r1 T; h8 x% U, e) z0 I% y/ K
6 n; {& U4 s1 t4 i9 N
  • 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)|')
  • 8 t& q3 a" Y1 H+ ]3 n' q/ S
            
% y: T+ w9 ~! G  V) _, u6 U # i) ~4 q% u% l' O: {7 t
figure(1)是加上零均值的随机噪声后的信号时域图形,通过观察这幅图很难辨别其频率成分。
' f( ~  A4 ?8 m4 u$ K" V1 G, d: B8 A6 m* Y. c# n

: l  ]8 _$ T0 a% ?5 D: A3 T% t' E  Q# l5 s, k$ j4 M
figure(2)是X(t)的单边幅度谱,通过这幅图其实已经能够看出信号的频率成分,分别为50Hz和120Hz,其他的频率成分都会噪声的频率分量。
# v9 I6 }8 R$ N6 ^
: w4 A7 T( \1 c1 w- D  q

9 G4 p) ~* H6 m7 ]
; |3 b5 b; [$ U1 J7 D+ ^figure(3)是信号S(t)的单边幅度谱,用作和figure(2)的幅度谱对比,原信号确实只有两个频率成分。, c# Q7 f3 r# S$ a7 L% P5 H1 V
- t* K: w1 f5 G2 N! ^' d

) w: d$ E& r* y
/ V( i1 s& ~1 T# Y3 J上面三幅图画到一起:
0 Q, q3 P& o( m+ V0 d! q3 u: a0 j5 D1 A- A4 O& t8 b  q

/ V- a: O+ [( z: c( X1 c
" B+ x: p& A8 T: A/ f2 J" v7 A. O$ Q
5 r& i! \5 n5 c9 I2 @+ Z$ I

/ \# ]  W& S, l( d: ?9 z8 a9 I0 z
  • 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-7-19 14:42 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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