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

📄 linepoint1.m

📁 这个主要是我所做的一段matlab代码
💻 M
字号:
clc
A=load('LineField.dat');
%figue(1)所绘的图像是散点以及散点拟合后的直线图像
figure(1)
plot(A(:,1),A(:,2),'.')
hold on
C=polyfit(A(:,1),A(:,2),1)
k=C(1);
b=C(2);
x=1:0.1:9.5
y=k*x+b;
plot(x,y)
hold on

%要把各点到直线的距离求出来,并把交点求出来,和相邻交点之间距离;各赋予一个数组
%即point() and distance()
k1=-1.0/k;
X=(A(:,2)-k1*A(:,1)-b)/(k-k1)
Y=k*X+b
plot(X,Y,'+')
num=length(X); %也就是交点的个数,—1就是判断的次数
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%对地下数据进行操作
figure(2)

B=load('Section01.dat')
count=0;%记录同一距离出现两个或两个以上深度de 点个数
for i=1:length(B)-1
    if B(i+1,1)< B(i,1)
        temp=i+1 ; %记录发生逆断层的点的位置
        count=count+1;
    end 
end

%处理异常点
%在所取得21个点中,每一个都要求其大于和小于改点的横坐标的距离,以此做插值--left--right
% Z 作为保存深度的数组
%在下面的一段中,X()是距离,是其余20个点与第一个点之间的距离
for i=1:length(A)
    for j=1:length(B)-1
        L(i)=sqrt((X(i)-X(1)).^2+(Y(i)-Y(1)).^2)
        if (L(i)<B(temp+1,1))|(L(i)>B(temp-count,1))&L(i)<B(length(B),1)%不在异常区域之内
            if B(j,1)<=L(i) &B(j+1,1)>=L(i)
                Z(i)=(B(j+1,2)-B(j,2))*(L(i)-B(j,1))/(B(j+1,1)-B(j,1))+B(j,2)
            end
        elseif L(i)>=B(length(B),1)
            Z(i)=B(length(B),2)
        else%在异常区域之内,我选择的是取最小值
            if B(j,1)<=L(i) &B(j+1,1)>=L(i)
                Z(i)=(B(j+1,2)-B(j,2))*(L(i)-B(j,1))/(B(j+1,1)-B(j,1))+B(j,2)
            end
        end
    end
end 
plot(L,Z)
axis([0 9 -8 0])

⌨️ 快捷键说明

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