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

MATLAB —— 信号处理工具箱之fft的案例分析

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
$ f7 g/ V" k" R- c7 G
上篇:
MATLAB —— 信号处理工具箱之fft的介绍和相关案例分析介绍了MATLAB信号处理工具箱中的信号变换 fft 并分析了一个案例,就是被噪声污染了的信号的频谱分析。: K4 ~9 w7 ]" k- |0 Y1 V. F
5 C- E  c8 d1 @& p4 y8 j( l  I
这篇博文继续分析几个小案例:
" U2 o: M8 k8 P8 A" _( j( U4 X0 \, c" s1 O5 K( L6 A) Z
Gaussian Pulse

+ R+ b) v' j( Q这个案例是将高斯脉冲从时域变换到频域,高斯脉冲的信息在下面的程序中都有注释:' P5 M8 p( U/ |

; C6 \2 Z! J4 {& n; F
  • clc
  • clear
  • close all
  • % Convert a Gaussian pulse from the time domain to the frequency domain.
  • %
  • % Define signal parameters and a Gaussian pulse, X.
  • Fs = 100;           % Sampling frequency
  • t = -0.5:1/Fs:0.5;  % Time vector
  • L = length(t);      % Signal length
  • X = 1/(4*sqrt(2*pi*0.01))*(exp(-t.^2/(2*0.01)));
  • % Plot the pulse in the time domain.
  • figure();
  • plot(t,X)
  • title('Gaussian Pulse in Time Domain')
  • xlabel('Time (t)')
  • ylabel('X(t)')
  • % To use the fft function to convert the signal to the frequency domain,
  • % first identify a new input length that is the next power of 2 from the original signal length.
  • % This will pad the signal X with trailing zeros in order to improve the peRFormance of fft.
  • n = 2^nextpow2(L);
  • % Convert the Gaussian pulse to the frequency domain.
  • %
  • Y = fft(X,n);
  • % Define the frequency domain and plot the unique frequencies.
  • f = Fs*(0: (n/2))/n;
  • P = abs(Y/n);
  • figure();
  • plot(f,P(1:n/2+1))
  • title('Gaussian Pulse in Frequency Domain')
  • xlabel('Frequency (f)')
  • ylabel('|P(f)|')

  • 8 g. L4 P+ C; w; u" ?- o& U* {
        
" B3 h9 r5 Z; B/ ?4 B0 f, Y
. y$ Z: ^1 n  m% X4 g9 B9 o高斯脉冲在时域的图像:9 v( _, q- {8 O5 y
% F+ a5 V, k* X# t5 S; j/ [" L- j
5 v8 K4 ~  D' X4 s2 G. f
( ~& \- j! f! q
高斯脉冲在频域的图像:
7 n: o& k1 |: \! K8 A7 q& Z
, g( q% |1 |! |( U( H' v

/ t6 V+ [: ?+ B' t0 R( e( a9 {6 i3 m3 T. m! o# U
/ Q: c3 |6 u8 X" _
6 s3 d% T! h' \
Cosine Waves
* {5 S) }# |  ?0 a3 ^/ [' t

2 ^; P& W9 F, j' @& v这个例子比较简单,就是不同频率的余弦波在时域以及频域的比较:
/ d+ ~$ o4 b  I4 J# b7 m% c6 m$ {  ^( Z) ~' u" U4 o
  • clc
  • clear
  • close all
  • % Compare cosine waves in the time domain and the frequency domain.
  • %
  • % Specify the parameters of a signal with a sampling frequency of 1kHz and a signal duration of 1 second.

  • 6 G, p4 C8 Y: r3 p/ |
  • Fs = 1000;                    % Sampling frequency
  • T = 1/Fs;                     % Sampling period
  • L = 1000;                     % Length of signal
  • t = (0: L-1)*T;                % Time vector
  • % Create a matrix where each row represents a cosine wave with scaled frequency.
  • % The result, X, is a 3-by-1000 matrix. The first row has a wave frequency of 50,
  • % the second row has a wave frequency of 150, and the third row has a wave frequency of 300.

  • 8 L2 ?( m  z" `; W0 j
  • x1 = cos(2*pi*50*t);          % First row wave
  • x2 = cos(2*pi*150*t);         % Second row wave
  • x3 = cos(2*pi*300*t);         % Third row wave

  • ) {" q8 W; q  `+ B
  • X = [x1; x2; x3];
  • % Plot the first 100 entries from each row of X in a single figure in order and compare their frequencies.
  • 1 `* c6 T( c7 v4 x0 R8 Y0 W" l( V
  • figure();
  • for i = 1:3
  •     subplot(3,1,i)
  •     plot(t(1:100),X(i,1:100))
  •     title(['Row ',num2str(i),' in the Time Domain'])
  • end

  • $ {0 L, _$ p7 g8 a. b; Q" f1 U
  • % For algorithm performance purposes, fft allows you to pad the input with trailing zeros.
  • % In this case, pad each row of X with zeros so that the length of each row is the next higher power of 2 from the current length.
  • % Define the new length using the nextpow2 function.

  • ; r& i3 _2 c$ ?5 m3 X" F
  • n = 2^nextpow2(L);
  • % Specify the dim argument to use fft along the rows of X, that is, for each signal.

  • 3 O- D5 M1 ]" ]" ]; @
  • dim = 2;
  • % Compute the Fourier transform of the signals.

  • 9 a8 T& h, c; [) |
  • Y = fft(X,n,dim);
  • % Calculate the double-sided spectrum and single-sided spectrum of each signal.
  • ! t' s& C7 B% r" v
  • P2 = abs(Y/L);
  • P1 = P2(:,1:n/2+1);
  • P1(:,2:end-1) = 2*P1(:,2:end-1);
  • % In the frequency domain, plot the single-sided amplitude spectrum for each row in a single figure.
  • % g. H2 ~+ I+ L4 f3 \+ I; n
  • figure();
  • for i=1:3
  •     subplot(3,1,i)
  •     plot(0: (Fs/n): (Fs/2-Fs/n),P1(i,1:n/2))
  •     title(['Row ',num2str(i),' in the Frequency Domain'])
  • end
    ; Z9 I4 E* d  u! }+ Y( W
           
5 ?) V; ~' n9 n( l3 w: y' q * w. t  O, D, p' h
下图是频率为50Hz,150Hz以及300Hz的余弦波在时域的图像:* F6 ]. O$ E$ e% s% b( y2 K/ D( j
" M+ w  ^7 }) A% v/ }( y2 B  |
/ R: X" Y* k% ^) @& V* H
! M  k' g, f  ?8 V+ U. X$ R
下图分别为其fft:% J8 V( T# P2 t2 {# `- |
6 b' v, e9 u& }) s5 _$ r: U3 A8 |

+ ?: q4 E* V% m8 Q! W) T5 {  d  c) {% K4 M- I$ _' U4 ?
从频域图中可以清晰的看到它们的频率成分位于何处。$ }, P; @6 y4 v0 j8 q
/ ?2 _) f* ^2 k6 s
7 L$ J8 ~5 A0 O7 {# y, I
  • TA的每日心情
    开心
    2020-12-3 15:53
  • 签到天数: 38 天

    [LV.5]常住居民I

    2#
    发表于 2019-11-26 16:00 | 只看该作者
    看看,学习一下
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-31 18:36 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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