matlab中错误原因串联矩阵的纬度不一样怎么解决?
的有关信息介绍如下:因为 R(A)=3
所以 AX=0 的基础解系含 n-r(A) = 4-3=1 个向量
而 3a3 - (a2+2a3) = (5, -9, 7, -9)^T 是 AX=0 的解, 故是基础解系
所以全部解为 (2,0,5,-1)^T + c(5, -9, 7, -9)^T
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
两个大小不同的矩阵是不能相加的
要实现对应位置相加,需要将纬度较小的扩展为纬度较大的矩阵
没有数据的位置填上零,形成两个大小相同的矩阵,然后再相加
A,B的大小并不确定,那么还需要先根据A,B的大小比较来确定如何扩展矩阵
m=max(size(A,1),size(B,1));%确定最大行数
n=max(size(A,2),size(B,2));%确定最大列数
AA=zeros(m,n);
BB=zeros(m,n);
AA(1:size(A,1),1:size(A,2))=A; %扩展A
BB(1:size(B,1),1:size(B,2))=B; %扩展B
C=AA+BB; %求和