|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
4 n" h$ X8 b$ b, }
上篇:MATLAB —— 信号处理工具箱之fft的介绍和相关案例分析介绍了MATLAB信号处理工具箱中的信号变换 fft 并分析了一个案例,就是被噪声污染了的信号的频谱分析。; Z3 J9 j" q5 {, t+ k, `
0 `1 s# I& J, O, O6 z/ n1 x这篇博文继续分析几个小案例:; Q- [' D. n! E7 Z* m% x$ h/ y1 P5 y% w
" U; |7 C+ P. b3 p, s
Gaussian Pulse
/ @4 J& z3 D1 k& q+ \这个案例是将高斯脉冲从时域变换到频域,高斯脉冲的信息在下面的程序中都有注释:
6 W2 d% O! P4 \. t5 r& g h: I, L ~! T# ^' m9 E
- 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)|')
- / g6 M# S+ o2 v' V
! |9 U' t7 k, @ / H) {3 H& `8 h# n! d5 `% w
高斯脉冲在时域的图像:
4 L Y, u+ n% E' l5 y8 D0 C
1 x' d+ @* e$ n$ O' D# o( S" r3 S1 r
0 K6 H; _* y2 g5 T& N5 D9 O ]
# _ G/ C' `& c/ y- o高斯脉冲在频域的图像:7 Z8 M0 u! o6 O& v, m
( _, G6 Q& ^5 c4 O4 z, Q
8 z8 M9 L) P: l/ m# J. R3 M: G( a
h% t8 C8 d: W: z5 v& L
1 o! ]" W) K. E; o4 C, E
: E5 D3 v9 A2 N& A' g( n) r" S9 X
Cosine Waves/ c. S. n) l% }* o, I
, P. R B' H: z. Y: I这个例子比较简单,就是不同频率的余弦波在时域以及频域的比较:
2 _1 }* ?6 N8 h0 Y. f$ e1 `# t3 Y7 V! w0 C
- 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.
2 j6 `$ a+ ~- u) W2 ?# L7 N- 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.
- 3 V9 W8 ?5 T Y$ t& u" H
- 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
/ Y! g- F9 g5 E- W* d- X = [x1; x2; x3];
- % Plot the first 100 entries from each row of X in a single figure in order and compare their frequencies.
' M7 V. e0 O) a- 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
- # d8 m/ o8 N+ N+ B8 Z
- % 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.
% H; S7 L# q! y- n = 2^nextpow2(L);
- % Specify the dim argument to use fft along the rows of X, that is, for each signal.
- b( P- T" n4 e( k
- dim = 2;
- % Compute the Fourier transform of the signals.
7 [' }4 y, `: A' _1 r7 Y; v% s- Y = fft(X,n,dim);
- % Calculate the double-sided spectrum and single-sided spectrum of each signal.
0 W# h. K& z% }% ?6 t* Z& T- 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.
- ; r8 W/ m! o( a
- 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
) W1 s' g& j# W1 k8 V0 ]3 ?3 \
" z+ J7 e9 J; X- ?& o, o+ i
. x& @ I" I& N6 x下图是频率为50Hz,150Hz以及300Hz的余弦波在时域的图像:
& F5 ]: _% v# ^5 L: ~) O. s. q
2 @5 p# f2 M9 b7 x# P7 @! s2 Z0 o+ @
0 f. l" P& g+ S' Z; F/ B7 ]
7 ^0 J" E6 W$ N3 P- x下图分别为其fft:
% z: m+ E1 U9 ^+ f* {! c/ Z9 P$ U r
7 v: F1 f& O- F9 [* ?$ Z& c
9 P$ g% m/ b _& m从频域图中可以清晰的看到它们的频率成分位于何处。
3 l( M# J5 E/ Q/ U8 M) l# D \# d8 X3 n7 w+ | _# D Q* q
9 n- X' p& }! F* b- A |
|