学习记录——纵横断面面积计算

最近在逐步学习MatLab,同时因为一些活动,要进行相关代码的编写,目前做了一个半成品出来,在这儿记录一下学习的过程吧。

代码中主要以大量的循环为主,因为对于MatLab的基础函数以及对于程序编写中参数类型的不熟悉,导致了很多的冗余运算,今后还要将努力学习。

clc
clear
close all
%% 读取所有点信息并展示
Indata=importdata('data.txt');
% fid=fopen('data.txt','r');
% data=fscanf(fid,'%s%d,%f,%f,%f\n');
Allpoint_data=Indata.data;
Azimuth_AB=Indata.textdata(3:4);
Point_name=Indata.textdata(5:end);

H0_Location=cell2mat(Indata.textdata(1));
A=isstrprop(H0_Location,'digit');
H0=str2num(H0_Location(A))/100000;


n=length(Allpoint_data); %存储数组总长,即点的总个数
X=Allpoint_data(:,1);
Y=Allpoint_data(:,2);
H=Allpoint_data(:,3);
plot(X,Y,'*y')
%% 提取K0/K1/K2的位置
SearchTool=strfind(Point_name,'K');
index=1;
for i=1:length(Allpoint_data)
    if isempty(SearchTool{i}) == 0
        key_point_Location(index,1)=i;
        index=index+1;
    end
end

%% 读取关键点的坐标
Key_point=zeros(length(key_point_Location),3);
for i=1:length(key_point_Location)
    
    Key_point(i,:)=Allpoint_data(key_point_Location(i),:);
    
end
hold on
plot(Key_point(:,1),Key_point(:,2),'-b')

%% 计算纵断面
% 1.计算纵断面的长度
D=zeros(length(Key_point)-1,1);
for i=1:length(Key_point)-1
    
    D(i)=sqrt((Key_point(i+1,1)-Key_point(i,1))^2+(Key_point(i+1,2)-Key_point(i,2))^2);
    
end
% 2.计算内插点的平面坐标
%(1)先计算内插点总个数
%(2)建立方位角矩阵Azimuth_Key_point,存储所有方位角信息
%(3)根据循环计算内插点的平面坐标

deltC=10;
%内插点个数
C_num=ceil(sum(D)/10);
%方位角矩阵
Azimuth_Key_point=zeros(length(Key_point)-1,1);
for i=1:length(Key_point)-1
    %该处方位角计算是按横坐标为X,纵坐标为Y计算
    deltX=Key_point(i+1,1)-Key_point(i,1);
    deltY=Key_point(i+1,2)-Key_point(i,2);
    if deltX>0 && deltY>0
        Azimuth_Key_point(i)=atan(deltX/deltY);
    else if (deltX>0 && deltY<0) || (deltX<0 && deltY<0)
            Azimuth_Key_point(i)=atan(deltX/deltY)+pi;
        else
            Azimuth_Key_point(i)=atan(deltX/deltY)+2*pi;
        end
    end
end

Azimuth_Key_point=rad2deg(A
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值