下面是我的程序:
clear;
clc;
A=load('C:\Users\Administrator\Desktop\b.TXT');
dep=A(83:1082,1);
rho=A(83:1082,5);
pro=A(83:1082,7);
SH=A(83:1082,12);
VP=A(83:1082,13);
VS=A(83:1082,14);
pclay=1.58;
pquartz=2.65;
pw=1;
kf1=2.2;
sw=1;
p0=0.9;
for delta=-2:0.01:1;
Vpw=(1+delta)*VP(:,1);
Vswq=0.80416*Vpw(:,1)-0.85880;
Vswclay=0.76969*Vpw(:,1)-0.86735;
Vsw1=SH(:,1).*Vswclay(:,1)+(1-SH(:,1)).*Vswq(:,1);
Vsw2=SH(:,1)/Vswclay(:,1)+(1-SH(:,1))/Vswq(:,1);
pma=SH(:,1)*pclay+(1-SH(:,1))*pquartz;
pbw=pma.*(1-pro(:,1))+pw.*pro(:,1);
u1=pbw.*(Vsw1).^2;
ksw1=(pbw.*(Vpw).^2)-((4/3)*u1);
khs1=1/(pro(:,1)/2.2+(1-pro(:,1)).*(1-SH(:,1))/36+(1-pro(:,1)).*SH(:,1));
khs2=1/(pro(:,1)/(2.2+4/3*45)+(1-pro(:,1)).*(1-SH(:,1))/(36+4/3*45)+(1-pro(:,1)).*SH(:,1)/(1.5+4/3*45))-4/3*45;
k1=(khs1+khs2)/2;
k0=pinv(k1);
kd1=ksw1-k0.*(1-(ksw1./k0)).^2./((pro(:,1).*k0./kf1)+(ksw1./k0)-1-pro(:,1));
kf=sqrt(pro(:,1)./2.2+(1-pro(:,1))./36);
ks1=kd1+k0.*(1-kd1./k0).^2/(pro(:,1).*k0./kf-kd1./k0+1-pro(:,1));
%kf=sqrt(pro(:,1)./2.2+(1-pro(:,1))./36);
pb=rho(:,1);
%pb=pma*(1-pro(:,1))+(1-sw)*pro(:,1)*p0+sw*pro(:,1)*pw;
vp1=sqrt((ks1+(4/3)*u1)/pb);
vs=sqrt(u/pb);
if(VP(:,1)-vp1(:,1)<0.1)
u=u1;
save('C:\Users\Adminstrator\Desktop\vs.TXT','vs');
end
end
提示错误的语句是:
ks1=kd1+k0.*(1-kd1./k0).^2/(pro(:,1).*k0./kf-kd1./k0+1-pro(:,1));
我想知道是不是因为维度不一致才这样的?如果是的话,如何调试出错在哪里?
1.png
(3.47 KB, 下载次数: 1)
2014-5-23 21:54 上传
是不是加法使用的问题?
2014-5-23 21:56 上传
点击文件名下载附件
708.32 KB, 下载次数: 9