|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; Y7 P8 V' O8 o% p+ I d& H a$ i
上篇:MATLAB —— 信号处理工具箱之fft的介绍和相关案例分析介绍了MATLAB信号处理工具箱中的信号变换 fft 并分析了一个案例,就是被噪声污染了的信号的频谱分析。
7 s9 a- b2 y ]& Q3 @5 y U& O) p1 R. S" B1 A
这篇博文继续分析几个小案例:
& f( ]+ {7 V9 N3 b) ^7 v
. ~3 }+ U4 J, fGaussian Pulse, u* _: F% a) Y: |$ _) z, s
这个案例是将高斯脉冲从时域变换到频域,高斯脉冲的信息在下面的程序中都有注释:
1 W" R% _2 T8 y& v0 w* B9 c0 u. q% g. U$ P
- 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)|')
- . Y& v4 I. D4 s8 x) ^2 w
: x* Z4 l& V8 ]" L# O5 x# K
" u1 |, ^# M: l0 _, R3 h
高斯脉冲在时域的图像:
9 r. Y# ?5 y/ H3 T, t
& O5 e) G7 `9 q) t; a/ f3 d7 P
2 K4 {9 F) g& ]- Z/ T3 W2 q
9 q' H6 t% E* w. Z. `
高斯脉冲在频域的图像:
1 z5 m5 ^& d3 f
, k4 L) }+ j9 D" c" ^0 K9 T
' |& {- ]2 r R3 Z& j
' \% u+ C4 O" }. j; g" k% T6 J( v" j. a- n+ Y( `( v. p2 r6 H
/ g, X) b* W) W3 W; v: kCosine Waves
3 E' Y9 F& I, ^( O; U3 M% G1 h! I5 z; l8 B
这个例子比较简单,就是不同频率的余弦波在时域以及频域的比较:! J) L! V% `6 T$ C/ j6 _
k( v* W4 _' h- @" y3 j. `
- 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.
7 h+ l5 j( k6 n1 |3 d+ Y0 O- 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.
- J& q: F6 I( J$ W- 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
- 2 M( s! h6 U {
- X = [x1; x2; x3];
- % Plot the first 100 entries from each row of X in a single figure in order and compare their frequencies.
- ; r, @' f7 q# ?
- 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
& J5 c1 f( z/ O/ B# ^2 M9 F- % 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.
3 G- u$ z8 }( N$ ~2 V! v- n = 2^nextpow2(L);
- % Specify the dim argument to use fft along the rows of X, that is, for each signal.
6 v* G$ L# r( h! y- dim = 2;
- % Compute the Fourier transform of the signals.
* [' B; o$ J4 ?, b8 @$ }- Y = fft(X,n,dim);
- % Calculate the double-sided spectrum and single-sided spectrum of each signal.
- $ m) K; V) v! G h# \
- 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.
- ( V# [; X( R! \( }* O# y* v
- 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
0 v* y3 X& e8 w# T 4 c2 t2 ?1 ~6 @6 M
- Y, E2 {% r+ X下图是频率为50Hz,150Hz以及300Hz的余弦波在时域的图像:
9 A/ W9 o! O4 ?( m* `
+ u( V) @3 I) L X
% E& r& X- A& Y
8 E; |) h+ W6 n/ m& E: p8 J
下图分别为其fft:
# v2 e6 r7 [0 F7 w4 M! U
% G2 ?( E( a& o
, o8 x* M0 U8 d% n
& z* B6 V+ x+ S* G0 G* U9 B0 e从频域图中可以清晰的看到它们的频率成分位于何处。 r+ f& Z+ j0 r3 r7 o: L/ P8 Z
5 t; L q3 T7 d9 l& `
j( V, u* g' v5 t4 _& c( [: P |
|