本博客是结合工作的需要并利用现有资源而完成的
一、数据的读取与时频出图
MATLAB是理工生科研中必不可少的利器,特别是在数据处理方面具有显著优势。当通过仿真和实验得出的数据后,往往会直接放到matlab中进行数据处理和出图。
1、数据的读取
数据存储在excel中,利用matlab读取时的命令如下:
T1=xlsread('C:\Users\Desktop\MM.xlsx',1,'A1:A241'); %读取第一列数据,该数据为时间X序列
QY1=xlsread('C:\Users\Desktop\MM.xlsx',1,'C1:C241'); %读取第二列数据,该数据为脉动Y序列
QY2=xlsread('C:\Users\Desktop\MM.xlsx',1,'F1:F241'); %读取第三列数据,该数据为脉动Y序列
QY3=xlsread('C:\Users\Desktop\MM.xlsx',1,'I1:I241'); %读取第四列数据,该数据为脉动Y序列
QY4=xlsread('C:\Users\Desktop\MM.xlsx',1,'L1:L241'); %读取第五列数据,该数据为脉动Y序列
QY5=xlsread('C:\Users\Desktop\MM.xlsx',1,'O1:O241'); %读取第六列数据,该数据为脉动Y序列
QY6=xlsread('C:\Users\Desktop\MM.xlsx',1,'R1:R241'); %读取第七列数据,该数据为脉动Y序列
QY7=xlsread('C:\Users\Desktop\MM.xlsx',1,'U1:U241'); %读取第八列数据,该数据为脉动Y序列
QY8=xlsread('C:\Users\Desktop\MM.xlsx',1,'X1:X241'); %读取第九列数据,该数据为脉动Y序列
QY9=xlsread('C:\Users\Desktop\MM.xlsx',1,'AA1:AA241'); %读取第十列数据,该数据为脉动Y序列
QY10=xlsread('C:\Users\Desktop\MM.xlsx',1,'AE1:AE241'); %读取第十一列数据,该数据为脉动Y序列
QY11=xlsread('C:\Users\Desktop\MM.xlsx',1,'AI1:AI241'); %读取第十二列数据,该数据为脉动Y序列
上文中的“'C:\Users\bb lan\Desktop\MM.xlsx'”命名方式与电脑属性对应,可随机修改。
2、数据出图
%% 将上述数据利用plot出图
plot(T1,QY1);
hold on
plot(T1,QY2);plot(T1,QY3);plot(T1,QY4);plot(T1,QY5);plot(T1,QY6);
plot(T1,QY7);plot(T1,QY8);plot(T1,QY9);plot(T1,QY10);plot(T1,QY11);
得出的时域下信号曲线,如图1所示。可看出时域下的曲线相对较杂乱,几乎无法进行结果分析。
二、时域与频域转换与频域出图
利用傅里叶时频转换将上述数据由时频信号转换为频率信号。
1、时域转频域
%%利用傅里叶(FFT)将时域信号转换位频域信号
YY1=fft(QY1);YY2=fft(QY2);YY3=fft(QY3);YY4=fft(QY4);YY5=fft(QY5);YY6=fft(QY6);
YY7=fft(QY7);YY8=fft(QY8);YY9=fft(QY9);YY10=fft(QY10);YY11=fft(QY11);
利用上述代码完成时频转换,得出的曲线为:
由于傅里叶(FFT)时频转换时,存在负值和对称区间的问题,一般最终出图时需取一下绝对值和一半区间为宜。具体代码如下:
%% 取绝对值和一半区间的代码
%利用傅里叶完成时频转换并对所得数据取绝对值
YY1=abs(fft(QY1));YY2=abs(fft(QY2));YY3=abs(fft(QY3));YY4=abs(fft(QY4));YY5=abs(fft(QY5));YY6=abs(fft(QY6));
YY7=abs(fft(QY7));YY8=abs(fft(QY8));YY9=abs(fft(QY9));YY10=abs(fft(QY10));YY11=abs(fft(QY11));
%取对称一半区间
len=length(T1);
Y1=YY1(1:len/2);Y2=YY2(1:len/2);Y3=YY3(1:len/2);Y4=YY4(1:len/2);Y5=YY5(1:len/2);
Y6=YY6(1:len/2);Y7=YY7(1:len/2);Y8=YY8(1:len/2);Y9=YY9(1:len/2);Y10=YY10(1:len/2);Y11=YY11(1:len/2);
2、利用时频间隔求取数据的频率
%% 利用时间间隔求取数据频率
t1=xlsread('C:\Users\bb lan\Desktop\MM.xlsx',1,'A1');
t2=xlsread('C:\Users\bb lan\Desktop\MM.xlsx',1,'A2');
len=length(T1);
t=t2-t1;fe1=1/t;
% 将频率数据取半并完成数据行列转换
fe2=(0:len)*fe1/len;fe=fe2.';f=fe(1:len/2);
3、频域出图
利用plot将上述11组数据的频域图导出。
%% 频域下数据出图
plot(f,Y1);
hold on
plot(f,Y2);plot(f,Y3);plot(f,Y4);plot(f,Y5);plot(f,Y6);
plot(f,Y7);plot(f,Y8);plot(f,Y9);plot(f,Y10);plot(f,Y11);
上图得出的曲线几乎集中于一段,因此美观性相对较弱。
4、三维下频域出图
%% 频域下数据出图
x1=1:120;x=x1.';
y1=1*ones(size(x));y2=2*ones(size(x));y3=3*ones(size(x));y4=4*ones(size(x));y5=5*ones(size(x));y6=6*ones(size(x));
y7=7*ones(size(x));y8=8*ones(size(x));y9=9*ones(size(x));y10=10*ones(size(x));y11=11*ones(size(x));
plot3(f,y1,Y1);
hold on
plot3(f,y2,Y2);plot3(f,y3,Y3);plot3(f,y4,Y4);plot3(f,y5,Y5);plot3(f,y6,Y6);
plot3(f,y7,Y7);plot3(f,y8,Y8);plot3(f,y9,Y9);plot3(f,y10,Y10);plot3(f,y11,Y11);
利用代码得出的三维下频域图,如图4所示:
利用上图就可以直观清楚的分析第一张不规则的所体现出的规律了。
三、数据转存
若需要将图4中的数据存至excel中,进而方便下次调用,代码如下:
xlswrite('C:\Users\Desktop\MN.xlsx',Y1,1,'A1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y2,1,'B1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y3,1,'C1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y4,1,'D1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y5,1,'E1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y6,1,'F1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y7,1,'G1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y8,1,'H1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y9,1,'I1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y10,1,'J1');
xlswrite('C:\Users\Desktop\MN.xlsx',Y11,1,'K1');
xlswrite('C:\Users\Desktop\MN.xlsx',f,1,'L1');
上面代码中'C:\Users\Desktop\MN.xlsx'取决于MN命名的excel表格所在的属性位置。
若对上述博客有疑问请QQ联系:2358571667