📄 linepoint1.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 + -