⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dis_to_time.m

📁 利用lindoapi借口在matlab中调用lindoapi中的函数
💻 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 + -