资源简介

通过matlab对gps 数据进行计算分析,以期得到较好的结果,使用最小二乘数据拟合

资源截图

代码片段和文件信息

%在以前的数据中空吊时的重量大概值为2.2-2.4之间
%在对钢卷的作业过程中,对草堆的作业不作记录,或者说对钢卷作业时不存在作业时重量数据的缓慢变化,这里面的参数应该能取大一些(重量变化数据更明显一些),
%可能出现的情况少一些

weight=xlsread(‘E:\中储\GPS数据\0729.xls‘‘j2:j65536‘);%读取重量传感器的重量数据
d=xlsread(‘E:\中储\GPS数据\新平行轨道计算结果.xls‘‘u2:u32769‘);%读取已换算好的龙门吊位置数据
xo2=60.680511163727;%龙门吊始点的坐标(60.6805111637270)
d=d-xo2;%坐标平移龙门吊行走的轨道为X轴
w=zeros(327681);
for i=1:32768
    w(i)=weight(2*i-1);%因之前在我的EXCEL表里面重量数据是每隔0.5秒一个GPS位置是每隔1秒一个为让数据在同一时间点相对应
end
xlswrite(‘E:\中储\GPS数据\628提需求点.xls‘w‘e2:e32769‘);
zuoye=zeros(10003);%记录实际作业,第一列记录作业的时刻(即数据的序号),第二列记录是提货还是卸货,第三列记录在求龙门吊位置时参于均值计算的个数
zuoye2=zeros(327683);%第一列记录在第i处是否有作业,
dengdai=0;%对异常点,用于等待判断标志
k=1;%记录实际作业过程
for i=15:32768
    if abs(w(i)-w(i-1))>0.2;%有的货轻此时重量变化缓慢.(在对钢卷作业的过程中可能是对草堆作业这个差值以后应该差大)
        if mean(w(i-4:i-1))<2.45 && mean(w(i+1:i+4))>2.6 && w(i-3)<2.5 && w(i+3)>2.6%符合条件的为提货时刻(因为在提货的前一段时间应该为空吊此时重量值、均值较小提货的后一段时间的重量值、均值较大)
            k=k+1;%(满足提货作业条件,增加一条作业记录)
            zuoye2(i1)=1;zuoye(k1)=i;zuoye(k2)=1;%提货标志为“1”
            if abs(sum(zuoye2(i-2:i1)))==2 %针对重量缓变的情况的多次计算以及在提货不久后抖动的情况,消掉后面的记录
                   zuoye2(i1)=0;zuoye(k1)=0;zuoye(k2)=0;k=k-1;
            else if zuoye(k2)==zuoye(k-12)&&zuoye(k2)==1
                           dengdai=1;%连续两次提货,数据有些异常,需要后面的值来进一步判断究竟哪一次是真的提货,但下面同时先记录下可能需要的信息
                           m=sum(d(i-98:2:i+100));n=100; %mn为记录龙门吊作业位置的均值
            for p=1:100
                if abs(d(i+2*p-100)-d(i))>2 %为记录作业时刻的位置取均值作准备
                    m=m-d(i+2*p-100);n=n-1;
                end
            end
            zuoye2(i2)=m/n;zuoye2(i3)=n;zuoye(k3)=n;%得到位置均值,及记录参于计算均值的数据个数
                else %初步判断为正常提货,下面对需要的信息进行记录
            m=sum(d(i-98:2:i+100));n=100; %mn为记录龙门吊作业位置的均值
            for p=1:100
                if abs(d(i+2*p-100)-d(i))>2
                    m=m-d(i+2*p-100);n=n-1;
                end
            end
            zuoye2(i2)=m/n;zuoye2(i3)=n;zuoye(k3)=n;
                    end
            end
        else %此刻为非提货时刻,下面需要判断是否为卸货时刻
            if mean(w(i-4:i-1))>2.6 && mean(w(i+1:i+4))<2.45 && w(i-3)>2.6 && w(i+3)<2.5%符合条件的为卸货时刻,(因为在提货的前一段时间应该为载货吊此时重量值、均值较大卸货的后一段时间的重量值、均值较小)
                  k=k+1;%初步满足卸货时刻
              zuoye2(i1)=-1;zuoye(k1)=i;zuoye(k2)=-1;%卸货标志为“-1”
            if abs(sum(zuoye2(i-2:i1)))==2 %%针对重量缓变的情况的多次计算以及在提货不久后抖动的情况,消掉后面的记录
                   zuoye2(i1)=0;zuoye(k1)=0;zuoye(k2)=0;k=k-1; %在这些记录里,只记录k=k-1应该就可以了
            else if zuoye(k2)==zuoye(k-12)&&zuoye(k2)==-1%连续两次卸货,数据有些异常,需要进一步判断究竟哪一次是真的卸货
                          if abs(mean(w(zuoye(k-21)+1:zuoye(k-11)-1))-mean(w(zuoye(k-11)+1:zuoye(k1)-1)))>1 %通过前一段作业时间的重量均值与后一时间段的重量均值相比,确定真的卸货点(此刻为前一个卸货点为真的卸货点)
                                   zuoye2(i1)=0;zuoye(k1)=0;zuoye(k2)=0;k=k-1; %消掉后面的卸货记录,总的作业次数减少一次
                               else zuoye2(zuoye(k-11)1)=0;zuoye2(zuoye(k-11)2)=0;zuoye(k-11)=i;zuoye(k2)=0;k=k-1;%表明此时后一个卸货点为真的卸货点,消掉前一个点的卸货记录,总的作业次数减少一次
      

评论

共有 条评论