Matlab代码修改

2025-06-21 06:34:24
推荐回答(1个)
回答1:

clear all;
close all;
clc;
A=[0.713 0.348 0.348 3.624 0.297]; %A表示一个西安市的各指标评价值
B=[0 0.2 0 0.2 1 0.8 inf 9 0 0.2 %B表示评价指标分级情况
0.2 0.4 0.2 0.4 0.6 0.8 6 9 0.2 0.6
0.4 0.6 0.4 0.6 0.4 0.6 3 6 0.6 1
0.6 0.8 0.6 0.8 0.2 0.4 1 3 1 2
1 0.8 1 0.8 0 0.2 0 1 inf 2];

sizeA = size(A);sizeB = size(B);
max=[0.984 0.403 0.507 4.079 0.457];
min=[0.402 0.113 0 3.104 0.127];
col=length(A);
row=(size(B,1));
for i = 1 : row %row表示有多少行,col表示有多少列
k=zeros(row,col); %生成一个有5行5列的零矩阵,用来储存生成的模糊关系矩阵
for j = 1:col
for m=1:row
if(A(1,j)>B(m,j*2-1) && A(1,j)<=B(m,j*2)) %表示当A的值于B中区间时,值为1
k(j,m)=1;
elseif(A(1,j)>B(m,j*2)) %表示当A的值大于B的右端点时,取x-a(i2)
a=A(1,j)-B(m,j*2);
elseif(A(1,j) a=B(m,j*2-1)-A(1,j);
end
if(max(j)-B(m,j*2)>B(m,j*2-1)-min(j)) %因为从表2中取第一行第一列数据时,该数据要计算表1中第一列row行,这过程中算R(ij)时用到的max和min仍是表2中第一列的数据
b=max(j)-B(m,j*2);
else b=B(m,j*2-1)-min(j);
end
k(j,m)=1-a/b;
end
end
k
end

%%不知道是不是你想要的,帮你修改了三处。一个是row取length(size(B))的意思是取得B的维数,我认为应该是取B的行数也就是size(B,1)。第二个,不能简单定义函数还没有输入值,这个和C语言有所不同,话说回来就是缺乏主函数,不可能运行。第三个就是A(i,j)的表述不对,A只是一行的数字,应该改成A(1,j)。大概就这样了