% % % % 该程序用于计算汽车工况的特征值,需要输入关于汽车的个人数据
% % % % % 运行时请根据自身情况输入
clear all %清除工作区
A=xlsread('di3.xlsx');%输入数据,得到A
R=xlsread('data3.xlsx');%输入数据,得到R
[u1,v1]=size(R);
v1=v1-1;%每循坏一次v1的值减去1
output=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];%输出的初始值
for j=1:1:v1
B=A(R(1,j):R(1,j+1),:);%计算B
m=B(:,1);%计算m
n=B(:,14)-B(1,14);%计算n
[nStep1,l]=size(n);
% plot(n,m),以n为横坐标,m为纵坐标作图,如果需要的话将注释号删去即可绘图
% xlabel('时间s')
% ylabel('车速km/h')
s=0;
nStep=nStep1-1;%每循坏一次nStep的值减去1
for i=1:1:nStep
k=(m(i)*(n(i+1)-n(i)))/3.6;%k的取值
s=s+k;%计算出s
end
Vmax=max(m);%Vmax等于m的最大值
t=n(end,1);
Vm=(s/t)*3.6;
vs=0;
for i=1:1:nStep
vs=vs+(m(i)-Vm)^2;%计算vs
end
Vs=sqrt(vs/nStep);%计算Vs
for i=1:1:nStep
a(i)=(m(i+1)-m(i))/(n(i+1)-n(i)+0.001)/3.6;%1111111111
end
amax=max(a);%amax等于a的最大值
ti=find(m==0);
Ti=length(ti);
ta=find(a>=0.15);%寻找a的值大于0.15的数,ta等于这些数
Ta=length(ta);
td=find(a<=-0.15);%寻找a的值小于等于0.15的数,ta等于这些数
Td=length(td);
Sumam=0;
for i=1:1:nStep
if a(i)>=0.15%如果a(i)大于等于0.15
Sumam=Sumam+a(i);
end
end
Am=Sumam/Ta;%计算Am的值
Dmax=min(a);%Dmax等于a的最小值
Sumdm=0;
for i=1:1:nStep
if a(i)<=-0.15%如果a(i)小于等于0.15
Sumdm=Sumdm+a(i);%循环得出Sumdm
end
end
Dm=Sumdm/Td;
Sumas=0;
for i=1:1:nStep
Sumas=Sumas+a(i)^2;%循环得出Sumas
end
As=sqrt(Sumas/nStep);%求出As的值
Pi=Ti/t;%得到Pi
Pa=Ta/t;%得到Pa
Pd=Td/t;%得到Pd
Pe=1-Pi-Pa-Pd;%得到Pe
Te=t-Ti-Ta-Td;%得到te
G=[R(1,j) t s Ti Ta Td Te Vmax Vm Vs amax Dmax Am As Pi Pa Pd Pe];%得到矩阵G
output=[output;G];
end
xlswrite('output3.xlsx',output);
评论0