TA的每日心情 | 擦汗 2018-9-25 11:31 |
---|
签到天数: 15 天 连续签到: 1 天 [LV.4]偶尔看看III 累计签到:15 天 连续签到:1 天
|
发表于 2018-7-14 19:56:21
|
显示全部楼层
) {# ?6 v. B. Q
频谱图是需要进行FFT分析的,这一步可以在MATLAB中代码实现,我近期恰好做了一次这个所以也刚弄明白,分享给你一条代码希望有所帮助。
4 {. C ~! n3 k1 Sclear;: ]0 n7 x& }3 [
clc;
" A. W: P; [. a9 T, M3 QA=importdata('.xlsx');%导入数据
+ i0 g/ l" }) M& C, bData=A.data;% i( A, H) f- K: v
DataSheet1=Data.Sheet1;%取表格第一sheet的数据. y4 q* O" G+ T- H" e
SampleRate=1*1e5;%采样率! X, M( |6 `4 f3 r
) |" N: ]: y$ ]7 R
DataSheet1=DataSheet1(3:end,:);%取表格第三行到结尾的数据- V; v1 q& d( M2 [2 ^3 O8 \
I=DataSheet1(:,1);%其中第一行为电流的数据
; W$ A. `) [$ o; Y
, I. [) i" Y* vTime=1:numel(I);%取抽样点数的数据
- w, Q* T9 E5 }( ]+ }/ h- NTime=Time/SampleRate;%波形图的横轴即间隔周期, J9 p. O( d& k) {
plot(Time,I)%画出波形图
1 F! `: |/ s' Y* x0 p! Q# p) v8 x
TS=Time;
1 b8 B+ {; F$ J7 r, Q# ]9 ^L=numel(TS);5 W5 {: Y5 F( V) v' q7 E& l6 X9 A& u3 J
y=I;
# p; w! V; p1 P3 M* C%% fft
! j. i$ R! T. o9 X- h- H. YFs=1./mean(diff(TS));%频率
+ r, j( U# Q9 s4 @1 s% _( uNFFT = 2^nextpow2(L);%主要用于计算L点最近的2的整数次幂的点数,此处取16384
- ^4 j) f* e2 x* p4 Y9 I& ZY = fft(y,NFFT)/L;%Y是复数矩阵,由于fft处理后数据为实数和复数的形式
M( X% L# H, {( I8 Z4 T; N$ [& Bf = Fs/2*linspace(0,1,NFFT/2+1);%频率分辨率矩阵,linspace将0-1平均分成NFFT/2份
- A- E6 I% r9 R6 u$ rPShow=2*abs(Y(1:NFFT/2+1));%计算模值,前面已经除以L了,此处绘图时候仅乘以2,这样绘制的频谱图就是时域信号对应频率点的真实幅值
/ W) x q) u2 A5 |7 bFreqShow=f*10;%频率分辨率
2 j3 _# Z6 [! z1 o* U( L1 gplot(FreqShow,PShow)2 s& |8 Z6 u0 C4 T: g% g5 f# t! L
Pyy = [1 : NFFT/2];1 z! r, q3 p2 h) J) U1 ] F. r- }* ?% V
for i = 1 : NFFT/21 t1 w/ Z7 B9 e) r' u: ~1 Q
Pyy(i) = phase(Y(i)); %计算相位( b. R6 T& n6 m6 G# R4 q* |
Pyy(i) = Pyy(i) * 180 / pi; %换算为角度
3 g& _1 y! E/ }2 d6 u! Cend;
' w: x; R0 N# X Y) _$ ^. {' d2 q; kxlabel('Frequency')
% {: n: y2 N( {/ K# z# zylabel('幅值')
/ H b& n, O" u. D- {6 ]xlim([1,1e5])
3 \5 K' b& g5 a: Ugrid on( `+ B' _* b4 W p: N @* Y
8 v% b' I! t% K1 m
( |5 o0 V5 n5 q) y |
|