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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 d1 H! C, K, ^; s
目录1 |) E( i, Z% w9 U
2 \5 K; r' m4 }( F6 X2 a
Syntax. N- \) t. K& I6 N! r7 K; l8 Z7 w
3 Q, s, L7 o; @+ S/ Y+ T) _/ {- Z
Description
+ c% E" s$ I1 _3 k0 `# A4 {" ~
6 ?/ A9 F( L4 G. E1 S% C* H       Y = fft(X)+ v0 p' F3 k- r$ o( m
! s" [) }- h* W) |! `" ]5 ~
       Y = fft(X,n)
: z/ _1 @$ a2 y9 g; {* i9 q" g* S7 b  n' G9 m
       Y = fft(X,n,dim)
5 m, v- h* B2 x* ?5 v. N- z0 |: _: t
Examples# ^; r9 Q. h3 u5 n
, T6 p; o+ ^  i' U8 Z
       Noisy Signal+ N" f  M0 r6 M9 f8 p
% x) W. Z: m  g/ E# V1 ^% o
* r! D4 T. ?3 i* |$ T1 w

7 ~7 }" z6 |) i9 _

. e+ D; I3 `" \# P/ k: K. eSyntax
6 ]/ C# a, H9 G( Q  _4 r) ?2 \
" L4 c8 ^, l" g6 ]( j# M) NY = fft(X)3 R( ]2 ?( C& K$ j: B& X
2 a5 D; `* o  c
Y = fft(X,n)
! x! ^' R1 A, f. [  B- D. C* T4 ^! Y" Z  M+ ]. h, i
Y = fft(X,n,dim)
+ h+ r5 e# L- X, d+ x& L; t! P. Q8 l& j% Q; X: t
$ G( Q+ n6 ~* ?; @  T6 R; m9 [
Description

. ]% ~, U# {8 L0 s. x& l
1 X: `' l8 {( ?+ Q; ~( {Y = fft(X)

! w' V- h1 W% P7 [- |5 a9 t& f8 H' Y0 t3 ^$ U" [4 P. V  Y$ X
Y = fft(X) 使用fast Fourier transform(FFT)算法计算信号X的离散傅里叶变换:6 }4 g9 t# h+ s* t6 y5 m( S
- o4 x, N0 K* a5 U
  • 如果 X 是一个向量,那么 fft(X) 返回向量的傅里叶变换;
  • 如果 X 是一个矩阵,则 fft(X) 视X的列为向量,然后返回每列的傅里叶变换;
  • 如果X是多维数组,则fft(X)将沿大小不等于1的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。/ G- i- b8 X; M( ?' u( s& x6 X  F
- Y. x- R6 a( ^6 `) P

  `7 C8 Y; `9 r  m; w8 v2 L$ q- L1 `4 n3 H
Y = fft(X,n)
# R9 D3 {; R  K1 A, a, S
2 m/ {; g* |# I( O
2 r% }& ]; o5 A% R$ M& h
Y = fft(X,n) 返回 n 点 DFT。 如果未指定任何值,则Y与X的大小相同。
' E$ A, [6 d: ]4 X: O# S  c( ]
, I. y: d8 K- l; f# ?  l6 S
  • 如果X是向量并且X的长度小于n,则用尾随零填充X到长度n。
  • 如果X是向量并且X的长度大于n,则X被截断为长度n。
  • 如果X是矩阵,那么每个列都被视为向量情况。
  • 如果X是多维数组,则大小不等于1的第一个数组维度将被视为向量的情况。
    8 ]2 L2 K' _4 f8 p- B3 Q* x/ g

+ w5 u6 f& z1 C. y$ M
. y5 L; B0 G  r5 f

& g# A% i2 a8 \( {Y = fft(X,n,dim)

" I) G/ \6 O" Y) U1 y) g2 S7 v, g5 ~4 {9 y- c3 I
Y = fft(X,n,dim)沿维度dim返回傅立叶变换。 例如,如果X是矩阵,则fft(X,n,2)返回每行的n点傅立叶变换。
- X8 [# v. h& Q* F5 `/ F% I) V7 H& E, k- F

: N+ U4 x4 B0 d  u* NExamples
5 ]1 b! z8 I* H; Y* p1 P+ A
' y5 }0 D3 w! n) w. J% L+ g! j
Noisy Signal
" ~% x3 U+ f* x0 Z+ C% B6 ?

+ ^- I! i: c2 p! H# O( ]使用傅立叶变换来查找隐藏在噪声中的信号的频率分量。
; d# G  d& k7 y* l$ P  p! W
" h+ {1 o; F) y! j指定采样频率为1 kHz且信号持续时间为1.5秒的信号参数。  i6 Y+ I$ p$ P2 t

5 V' A2 ?& l+ y' C
  • 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)|')
  • ( N4 P7 f# a, Q+ x& ^
            
% k4 l! a* \* H
, `3 }( y6 _9 a1 _. X. k$ B$ n0 Ffigure(1)是加上零均值的随机噪声后的信号时域图形,通过观察这幅图很难辨别其频率成分。2 v6 t+ k: J5 O( i- y1 O4 K& X

6 E) V' ?; t! @; ?( s2 J

3 [# ~  p8 Z& `' M/ A) e% h, J$ I* q0 b0 o8 Y
figure(2)是X(t)的单边幅度谱,通过这幅图其实已经能够看出信号的频率成分,分别为50Hz和120Hz,其他的频率成分都会噪声的频率分量。
( |& }' L% Z' L# M9 J5 A
6 J& r" A4 r8 O7 |3 k$ F

! z, B0 Y4 ~0 A0 i
4 h% g6 x1 O6 N4 w( U% Pfigure(3)是信号S(t)的单边幅度谱,用作和figure(2)的幅度谱对比,原信号确实只有两个频率成分。- \% S+ I! w% `' W1 v

! x5 u* S; Y0 Q: E+ F" t
8 s5 Z/ y+ d: L9 h, N

+ A- F4 f  R4 |, X上面三幅图画到一起:% p0 g5 E3 u0 Z% O
8 m$ C; k2 V+ m* U& ~6 k; H

' ^' c+ j# s* ^: C4 I. v
3 h; w( F1 h3 p$ t5 N6 f3 s; f0 [8 i) G- [' x. X! m. \% r2 r  T" z

& H( D$ l. T9 q2 o; c7 w
; v3 h1 h% R+ A7 t
  • 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-31 20:58 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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