TA的每日心情 | 擦汗 2018-9-25 11:31 |
---|
签到天数: 15 天 连续签到: 1 天 [LV.4]偶尔看看III 累计签到:15 天 连续签到:1 天
|
发表于 2018-7-14 19:56:21
|
显示全部楼层
6 y1 O5 ?9 f: F% b @9 X1 l
频谱图是需要进行FFT分析的,这一步可以在MATLAB中代码实现,我近期恰好做了一次这个所以也刚弄明白,分享给你一条代码希望有所帮助。$ d5 [* n- |1 K$ B N3 `
clear;+ l- q3 \3 c4 r
clc;
! f7 w+ F3 }9 UA=importdata('.xlsx');%导入数据
: C% G; p. m. EData=A.data;
/ F# d1 p, r) fDataSheet1=Data.Sheet1;%取表格第一sheet的数据9 v: x$ M6 _1 U% y* l- o: A& y
SampleRate=1*1e5;%采样率( u9 e9 w6 S9 w
# p! d( _0 n' | d# [: x; KDataSheet1=DataSheet1(3:end,:);%取表格第三行到结尾的数据
: u- _1 {: O, I1 D, h iI=DataSheet1(:,1);%其中第一行为电流的数据' a T& E; v" @! ^
, C2 c N/ {3 f+ I9 G4 L0 G
Time=1:numel(I);%取抽样点数的数据$ o% \( k/ K/ I. R
Time=Time/SampleRate;%波形图的横轴即间隔周期! D' R* L7 ]; E
plot(Time,I)%画出波形图6 L7 C% u- Z% c& N% T
5 [" o3 m$ J# ^1 ~/ {
TS=Time;
`# L# `3 S( U- eL=numel(TS);) S5 w3 O3 }- `$ b& M8 c" P
y=I;# G* n6 [ E* a& x+ t% S' K
%% fft$ i0 ?9 f6 a. N7 }$ C/ I
Fs=1./mean(diff(TS));%频率
- u9 J2 ?. n* a1 _. \0 ~( rNFFT = 2^nextpow2(L);%主要用于计算L点最近的2的整数次幂的点数,此处取16384
4 h" Y7 G3 S! ]- Y3 }0 mY = fft(y,NFFT)/L;%Y是复数矩阵,由于fft处理后数据为实数和复数的形式% Y0 t) t' j* Z9 o
f = Fs/2*linspace(0,1,NFFT/2+1);%频率分辨率矩阵,linspace将0-1平均分成NFFT/2份
) K- }; ^% q+ _$ p; M) s! M0 APShow=2*abs(Y(1:NFFT/2+1));%计算模值,前面已经除以L了,此处绘图时候仅乘以2,这样绘制的频谱图就是时域信号对应频率点的真实幅值
4 p9 _4 F8 C# [/ ^- x8 SFreqShow=f*10;%频率分辨率! O* i$ p. {4 u7 d [5 d* n
plot(FreqShow,PShow)
6 Y. {9 H1 f8 B6 iPyy = [1 : NFFT/2];
$ R5 u. T$ |9 C6 [9 Lfor i = 1 : NFFT/2
( B6 P2 X, V. `& l0 [Pyy(i) = phase(Y(i)); %计算相位0 @5 q& D& k ]) s* B# X0 m
Pyy(i) = Pyy(i) * 180 / pi; %换算为角度* }( d" @* D0 d9 s4 w" W; d( Q: \+ L/ I
end;
8 f( j5 X* d& vxlabel('Frequency')
3 U) M, @, p- \& b' r3 Tylabel('幅值')
. r! I( C; T0 w) U. q+ ]. sxlim([1,1e5])
. D4 _, x% j6 S: O7 igrid on2 _" J( d5 ]: i+ Z, O, M, q
. Z: G) x0 }. |: P$ s8 c# J+ n2 u, V" B; T1 r6 Y
|
|