📄 dis_to_time.m
字号:
function dis_to_time()
INFI=900000000;
% V_max=input('Please enter the max speed in unit of mm/sec)');
% t_max=input('Please enter the max acceleration time(in unit of msec)');
V_max=250;
t_max=600;
%V_max=250; %单位:mm/s
%orgin=[0,0];
%构造距离矩阵
data = xlsread('D:\MATLAB701\work\SRT\加速曲线矩阵','sheet2');
m=length(data);
% data(m+1,1)=0;data(m+1,2)=0;
for i=1:m
for j=1:i
distance(i,j) = sqrt((data(i,1)-data(j,1))^2+(data(i,2)-data(j,2))^2);
end
end
%每隔step个数据选择一个加速点
num_of_points=t_max/10;
step=240/num_of_points; %单位:msec
%从excel中取出原始加速曲线数据,将之存放到数组OR中。根据step在从OR中取出要用的数据,存放到数组B中
i=round(step/2); %从step/2个点开始取点
j=1;
OR=xlsread('D:\MATLAB701\work\SRT\加速曲线矩阵','sheet1');
while(i<=240)
B(j)=OR(i);
i=i+step;
j=j+1;
end
% orig=[0 cumsum(OR)*V_max/sum(OR)];
%计算每个加速点对应的速度值,存放到数组V中
B=cumsum(B);
V=B*V_max/B(num_of_points)/1000; % 单位:mm/msec
t=[10:10:t_max];
% plot(t,V);
%通过数值积分得每个加速点对应的路程,存放到数组S中
S(1)=0;T(1)=0;
S(2)=V(1)*10*0.5;
T(2)=10;
for i=3:num_of_points+1
S(i)=10*(V(i-1)+V(i-2))/2;
T(i)=(i-1)*10;
end
S=cumsum(S);
S_max=S(num_of_points+1);
% VV=[0 V];
% pic=[VV;S];
% [AX,H1,H2]=plotyy(T,VV,T,S);
% set(get(AX(1),'Ylabel'),'String','V/mm per msec');
% set(get(AX(2),'Ylabel'),'String','S/mm');
% xlabel('T/msec');
% title('V-T & S-T');
% set(H1,'Marker','+');
% set(H2,'Marker','p');
%---------------------------------------------------
% S_test_1=[0:3:198];
% time_test_1=2*interp1(S,T,S_test_1/2);
% S_test_2=[199:3:250];
% time_test_2=2*t_max+(S_test_2-2*S_max)/V_max*1000;
% S_test=[S_test_1 S_test_2];
% time_test=[time_test_1 time_test_2];
% plot(S_test,time_test,'Marker','*');
%根据所得出的距离与时间的对应关系,由坐标点之间的距离矩阵distance得到坐标点之间的时间矩阵time (单位 msec)
for i=1:m
for j=1:i
if distance(i,j)>=S_max*2
time(i,j)=2*t_max+(distance(i,j)-2*S_max)/V_max*1000;
else
time(i,j)=2*interp1(S,T,distance(i,j)/2);
end
end
end
n=length(distance);
for i=1:n
distance(i,i)=INFI;
time(i,i)=INFI;
for j=i+1:n
distance(i,j)=distance(j,i);
time(i,j)=time(j,i);
end
end
xlswrite('distance_and_time',n,'n');
xlswrite('distance_and_time',distance,'distance');
xlswrite('distance_and_time',time,'time');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -