function y = landslidepj(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11)
%UNTITLED 滑坡易发性评价
% 模糊综合评价对栅格单元进行评价,x1--高程...,输出y=1,2,3,4,5表示栅格单元的易发性等级.1==极低,2==低,3==中,4==高,5==极高。
y1 = 1.*(x1==0)+0.*(x1~=0);
y2 = 1.*(x1==0.4523)+0.*(x1~=0.4523);
y3 = 1.*(x1==0.7258)+0.*(x1~=0.7258);
y4 = 1.*(x1==1.1308)+0.*(x1~=1.1308);
y5 = 1.*(x1==1.2203)+0.*(x1~=1.2203);
y6 = 1.*(x2==0.4203)+0.*(x2~=0.4203);
y7 = 1.*(x2==0.4972)+0.*(x2~=0.4972);
y8 = 1.*(x2==0.785)+0.*(x2~=0.785);
y9 = 1.*(x2==1.3499)+0.*(x2~=1.3499);
y10 = 1.*(x2==1.5963)+0.*(x2~=1.5963);
y11 = 1.*(x3==0.5413)+0.*(x3~=0.5413);
y12 = 1.*(x3==1.0533)+0.*(x3~=1.0533);
y13 = 1.*(x3==1.0754)+0.*(x3~=1.0754);
y14 = 1.*(x3==1.0771)+0.*(x3~=1.0771);
y15 = 1.*(x3==1.1366)+0.*(x3~=1.1366);
y16 = 1.*(x4==0.8333)+0.*(x4~=0.8333);
y17 = 1.*(x4==0.8469)+0.*(x4~=0.8469);
y18 = 1.*(x4==1.0357)+0.*(x4~=1.0357);
y19 = 1.*(x4==1.0856)+0.*(x4~=1.0856);
y20 = 1.*(x4==1.1581)+0.*(x4~=1.1581);
y21 = 1.*(x5==0.4196)+0.*(x5~=0.4196);
y22 = 1.*(x5==0.4803)+0.*(x5~=0.4803);
y23 = 1.*(x5==0.8806)+0.*(x5~=0.8806);
y24 = 1.*(x5==1.1262)+0.*(x5~=1.1262);
y25 = 1.*(x5==1.372)+0.*(x5~=1.372);
y26 = 1.*(x6==0.4902)+0.*(x1~=0.4902);
y27 = 1.*(x6==0.5598)+0.*(x6~=0.5598);
y28 = 1.*(x6==0.7607)+0.*(x6~=0.7607);
y29 = 1.*(x6==1.0971)+0.*(x6~=1.0971);
y30 = 1.*(x6==1.5877)+0.*(x6~=1.5877);
y31 = 1.*(x7==0.3177)+0.*(x7~=0.3177);
y32 = 1.*(x7==0.336)+0.*(x7~=0.336);
y33 = 1.*(x7==0.4757)+0.*(x7~=0.4757);
y34 = 1.*(x7==0.7837)+0.*(x7~=0.7837);
y35 = 1.*(x7==2.1642)+0.*(x7~=2.1642);
y36 = 1.*(x8==0)+0.*(x8~=0);
y37 = 1.*(x8==0.7458)+0.*(x8~=0.7458);
y38 = 1.*(x8==0.8316)+0.*(x8~=0.8316);
y39 = 1.*(x8==1.3476)+0.*(x8~=1.3476);
y40 = 1.*(x8==1.5868)+0.*(x8~=1.5868);
y41 = 1.*(x9==0.5857)+0.*(x9~=0.5857);
y42 = 1.*(x9==0.9208)+0.*(x9~=0.9208);
y43 = 1.*(x9==1.0262)+0.*(x9~=1.0262);
y44 = 1.*(x9==1.194)+0.*(x9~=1.194);
y45 = 1.*(x9==1.4944)+0.*(x9~=1.4944);
y46 = 1.*(x10==0.7318)+0.*(x10~=0.7318);
y47 = 1.*(x10==0.8918)+0.*(x10~=0.8918);
y48 = 1.*(x10==0.9762)+0.*(x10~=0.9762);
y49 = 1.*(x10==1.1716)+0.*(x10~=1.1716);
y50 = 1.*(x10==1.3522)+0.*(x10~=1.3522);
y51 = 1.*(x11==0.5961)+0.*(x11~=0.5961);
y52 = 1.*(x11==0.7439)+0.*(x11~=0.7439);
y53 = 1.*(x11==1.0178)+0.*(x11~=1.0178);
y54 = 1.*(x11==1.0922)+0.*(x11~=1.0922);
y55 = 1.*(x11==1.218)+0.*(x11~=1.218);
a1 = [y1 y2 y3 y4 y5];
a2 = [y6 y7 y8 y9 y10];
a3 = [y11 y12 y13 y14 y15];
a4 = [y16 y17 y18 y19 y20];
a5 = [y21 y22 y23 y24 y25];
a6 = [y26 y27 y28 y29 y30];
a7 = [y31 y32 y33 y34 y35];
a8 = [y36 y37 y38 y39 y40];
a9 = [y41 y42 y43 y44 y45];
a10 = [y46 y47 y48 y49 y50];
a11 = [y51 y52 y53 y54 y55];
R = [a1;a2;a3;a4;a5;a6;a7;a8;a9;a10;a11];
A = [0.085 0.052 0.0747 0.0749 0.0908 0.0843 0.1443 0.1394 0.0679 0.0773 0.0748];
[n,m]=size(A); [m1,n1]=size(R);
if n ~=1&&m~=m1;error('不能运算');end
B = zeros(n,n1);
for k =1:m
for i=1:n
for j=1:n1;B(i,j)=min(1,B(i,j)+A(i,k)*R(k,j));
ind = find(B==max(B));
y = ind;
end
end
end
end
调用该函数计算:
data=xlsread('C:\Users\dell\Desktop\滑坡数据2.xlsx','sheet1','A2:k10001');
x1=data(:,1);
x2=data(:,2);
x3=data(:,3);
x4=data(:,4);
x5=data(:,5);
x6=data(:,6);
x7=data(:,7);
x8=data(:,8);
x9=data(:,9);
x10=data(:,10);
x11=data(:,11);
i=1;
q = 0;
while(i<10001)
xa=x1(i);
xb=x2(i);
xc=x3(i);
xd=x4(i);
xe=x5(i);
xf=x6(i);
xg=x7(i);
xh=x8(i);
xi=x9(i);
xj=x10(i);
xk=x11(i);
z = landslidepj(xa,xb,xc,xd,xe,xf,xg,xh,xi,xj,xk);
i = i+1;
q=[q;z'];
end
q;
本来结果是一行数据 对应一个结果(一个数),但是导入数据行数多了 之后结果就不是一行数据对应一个结果了