|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
" X5 A J* b% y# A( W& W
上篇:MATLAB —— 信号处理工具箱之fft的介绍和相关案例分析介绍了MATLAB信号处理工具箱中的信号变换 fft 并分析了一个案例,就是被噪声污染了的信号的频谱分析。
4 p! C* w$ {5 N8 F% R) `: O9 a' b0 `
这篇博文继续分析几个小案例:
+ e% J6 g. ^" H3 J: V8 ]5 R d6 R( `, ?4 X! x3 e
Gaussian Pulse
, F6 t( ~, [4 I1 T' [这个案例是将高斯脉冲从时域变换到频域,高斯脉冲的信息在下面的程序中都有注释:
3 T' B! X8 N+ a6 X5 ?" L
4 q+ `5 |. Z- ?9 p5 u- 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)|')
- 6 U \; j% V- |) z% Y# l: H
( N( N8 @2 G8 l2 o2 f. N 2 J1 q. `. f6 b
高斯脉冲在时域的图像:
5 l4 Q1 {+ e! c: F% b' N; f# Y& f& t3 W. `. m+ Q3 @
. ~9 ], a1 P8 I
; n, @) r8 R+ m3 j- Z1 p! j5 o% n高斯脉冲在频域的图像:) t# Q; G c6 {6 ~* Q! E6 p3 G" S/ k
; G. G- s* X E6 n$ {5 J) }, j( G
; F4 q6 k' k; U( k; W- `' N: b$ E% M3 S, H4 ^
/ L" H7 R& e. f1 F5 Q/ d# D u0 I# I, p* G/ A* U
Cosine Waves
2 b/ t" O1 n7 ^4 c
) [, r3 c0 O# O这个例子比较简单,就是不同频率的余弦波在时域以及频域的比较:( @0 b5 ` b( S- F
3 W0 |4 e& H( N) ]+ O( [/ 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.
- 0 n5 [1 a; w* ]8 Q* y# l
- 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( P0 M8 I$ \: B7 J" r+ p9 O5 d
- 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
- 8 w8 r8 ^& g: T1 A
- X = [x1; x2; x3];
- % Plot the first 100 entries from each row of X in a single figure in order and compare their frequencies.
- & {- w e6 o& j7 e4 i5 i# b; T
- 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
- % O8 `) u% s, } n0 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.
- - p0 g; A F: j
- n = 2^nextpow2(L);
- % Specify the dim argument to use fft along the rows of X, that is, for each signal.
$ F/ i3 Y% v" Q* @0 D- dim = 2;
- % Compute the Fourier transform of the signals.
- ( H9 K; w- T1 l2 v- r+ K8 _
- Y = fft(X,n,dim);
- % Calculate the double-sided spectrum and single-sided spectrum of each signal.
( L; ?! v; ] G1 A( x- 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.
- $ u. N2 h* ?( b
- 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
9 m$ Y7 {* R( `! i9 p
) T0 ~) K8 b% M5 f" ~
) a: B% N! ^+ A2 h6 l5 F2 v4 d下图是频率为50Hz,150Hz以及300Hz的余弦波在时域的图像:2 F$ h- R/ \( A' t r" ~
7 M1 d" S r4 n8 [% H, W# e
4 |0 f, T- N0 c6 @4 A. x
$ h) R$ Y3 B7 k2 G4 Y/ e4 y9 ^# E
下图分别为其fft:
" W7 r4 a0 y% E \ H- y
9 Y, X5 P4 g: p: x2 K8 `0 b
* W B# P* f) v9 Z' E3 }
- W4 j$ ]! I& c3 w3 |, S从频域图中可以清晰的看到它们的频率成分位于何处。
+ L7 \( ]/ p, I0 ?8 H, }
+ Q6 J Z5 C' y+ q1 S8 Z# ^( A# q* X6 R& T! b6 s; |2 a
|
|