|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
7 P) u5 y' r: M7 j9 m
上篇:MATLAB —— 信号处理工具箱之fft的介绍和相关案例分析介绍了MATLAB信号处理工具箱中的信号变换 fft 并分析了一个案例,就是被噪声污染了的信号的频谱分析。
* e) C9 ~* b9 ]( k# L' g2 G
: L/ h) M1 v1 D- O0 {7 V这篇博文继续分析几个小案例:. j$ D+ U+ T Q' G0 b
$ I8 L9 Y6 w' G" u( T
Gaussian Pulse
& O/ \3 {8 T" u5 c3 S2 I4 B这个案例是将高斯脉冲从时域变换到频域,高斯脉冲的信息在下面的程序中都有注释:
+ l/ D4 Y U3 L: @$ @' E( @7 r" I; [
- 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)|')
. J. r. e/ u0 [
+ V$ A- F, a" m ]0 s* l' K- d7 \
. H1 r1 e# P' @$ ^7 C! H高斯脉冲在时域的图像:) i5 T: o3 M- R7 [
8 X# [& U2 O, ~# X5 n% T4 K5 t
* ?3 x* j; T( i5 @5 T$ }0 [1 i: P8 d# V3 W6 R/ Q
高斯脉冲在频域的图像:
8 c! L4 A% \( O1 t1 i; {/ ^6 h5 S7 B2 l! o; U
7 r6 Y& ]# x, J& l
/ I% `0 f4 ^; }& _& K4 ?
/ A+ T2 O7 o5 I3 C U
2 D1 b$ }; a. k9 h- m+ MCosine Waves8 ~4 Y# j I) |0 w& S
5 d. H# e" ` _& N
这个例子比较简单,就是不同频率的余弦波在时域以及频域的比较:6 l# k( N9 D* Y4 m, N; m
2 I! M1 z& |& p/ t
- 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.
; x) x& Q- w+ V+ J- 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.
- * p; H. V6 ?" _1 X) M k
- 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
3 y& e, C2 r- x9 W- X = [x1; x2; x3];
- % Plot the first 100 entries from each row of X in a single figure in order and compare their frequencies.
- 8 e+ Z# k W: ]2 W; P2 n, l3 {
- 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
" b4 e8 n' M, c' `) N- % 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.
- / u f7 o* j: ?- w) U
- n = 2^nextpow2(L);
- % Specify the dim argument to use fft along the rows of X, that is, for each signal.
) }; Y$ C' J& N& X4 Y- dim = 2;
- % Compute the Fourier transform of the signals.
- # }: o3 t. K$ S3 K9 M7 ], f% g
- Y = fft(X,n,dim);
- % Calculate the double-sided spectrum and single-sided spectrum of each signal.
5 b, A' L( {% _- 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.
6 D( g$ ~9 I7 H: K4 M- 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- k* z9 x+ I1 Q) C+ n
`' r$ ^3 @( O& X0 ]7 o : L G2 U( P. D. `5 I
下图是频率为50Hz,150Hz以及300Hz的余弦波在时域的图像:5 X- Z6 R8 ]/ k
+ e+ }% ?, j; C' I: z
' L L& ^- A( K/ q& q" R
5 b' ~ K( T3 J; M
下图分别为其fft:
" E- B, v0 n* p" p# n/ z) x. n$ }/ ~( Z+ C
% O- z- g" x5 \% ^5 U5 T8 y- }$ {' {6 @3 k) |
从频域图中可以清晰的看到它们的频率成分位于何处。$ I+ L9 m: F* p7 n0 q: x3 X4 I8 A
/ Z& N/ N8 V. H3 v* p8 @% T
1 C$ B8 f B, z+ {6 f8 f$ H |
|