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

📄 surf2line.m

📁 航磁数据调平中的数据分线功能
💻 M
字号:
%数据分线
clc;
clear;
clc;
[FileName,PathName]= uigetfile('*.*','select data file');
if FileName==0;
    return;
end
outfilename=[PathName,'outlist.txt'];

surf=load([PathName,FileName]);

[FileName,PathName]= uigetfile('*.*','select Setup file');
if FileName==0;
    return;
end
setup=load([PathName,FileName]);
% customangle=80;
% distant=5;
customangle=setup(1);
distant=setup(2);

AddScrip='E.txt';

[np,xyz]=size(surf);
if np<3;
    return;
end
xyp1=surf(1,1)+surf(1,2)*i;
xyp2=surf(2,1)+surf(2,2)*i;
plot([xyp1,xyp2],'b');
grid on;
hold on;
plot([xyp1,xyp2],'g*','LineWidth',2);
List=zeros(np,2);
List(:,1)=[1:np]';
LineID=1;
List(1,2)=LineID;
List(2,2)=LineID;

xyp1old=xyp1;
ii=3;
while ii<=np;
    xyp1=surf(ii-2,1)+surf(ii-2,2)*i;
    xyp2=surf(ii-1,1)+surf(ii-1,2)*i;
    if xyp2==xyp1
        xyp1=xyp1old;
    else
        xyp1old=xyp1;
    end    
    xyp3=surf(ii,1)+surf(ii,2)*i;
    
    line1=xyp2-xyp1;
    line2=xyp3-xyp2;
    if xyp2==xyp3
        xyp1old=xyp1;
        disp([num2str(ii),'is true']);
        plot([xyp2,xyp3],'b','LineWidth',2);
        grid on;
        hold on;
        plot([xyp2,xyp3],'g*');
        List(ii,2)=LineID;     
        ii=ii+1;
        xyp2=surf(ii-1,1)+surf(ii-1,2)*i;
        xyp3=surf(ii,1)+surf(ii,2)*i;      
    end

    angleline=angle(line2/line1)*180/pi;
    if angleline>customangle | angleline<-customangle | abs(line2)>distant
        disp([num2str(ii),'is fault']);
        plot([xyp2,xyp3],'k');
        grid on;
        hold on;
        plot([xyp2,xyp3],'r*','MarkerSize',10);
        List(ii,2)=LineID+1;
        LineID=LineID+1;
        
        ii=ii+1
        xyp2=surf(ii-1,1)+surf(ii-1,2)*i;
        xyp3=surf(ii,1)+surf(ii,2)*i;
        disp([num2str(ii),'is true']);
        plot([xyp2,xyp3],'b','LineWidth',1);
        grid on;
        hold on;
        plot(xyp3,'g*','MarkerSize',5);
        List(ii,2)=LineID;
        
        ii=ii+1;
    else
        disp([num2str(ii),'is true']);
        plot([xyp2,xyp3],'b','LineWidth',1);
        grid on;
        hold on;
        plot([xyp2,xyp3],'g*','MarkerSize',5);
        List(ii,2)=LineID;
        ii=ii+1;
    end            
end
disp(['Total Line:',num2str(List(end,2))])
save(outfilename,'-ascii','List');
save List.mat List;
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------
%******************************* EOF **************************************
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -