matlab dim是什么意思,哪位大神给我解释下这两句程序是什么意思

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

disp('请输入判断矩阵A(n阶)');

A=input('A=');

[n,n]=size(A);

x=ones(n,100);

y=ones(n,100);

m=zeros(1,100);

m(1)=max(x(:,1));

y(:,1)=x(:,1);

x(:,2)=A*y(:,1);

m(2)=max(x(:,2));

y(:,2)=x(:,2)/m(2);

p=0.0001;i=2;k=abs(m(2)-m(1));

while k>p

i=i+1;

x(:,i)=A*y(:,i-1);

m(i)=max(x(:,i));

y(:,i)=x(:,i)/m(i);

k=abs(m(i)-m(i-1));

end

a=sum(y(:,i));

w=y(:,i)/a;

t=m(i);

disp(w);disp(t);

%以下是一致性检验

CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46

1.49 1.52 1.54 1.56 1.58 1.59];

CR=CI/RI(n);

if CR<0.10

disp('此矩阵的一致性可以接受!');

disp('CI=');disp(CI);

disp('CR=');disp(CR);

end

function AHPInit1(x,y)

%层次分析的初始化

%默认只有两层

x为准则数,y为方案数

%CToT为准则对目标生成的比较阵

%EigOfCri为准则层的特征向量

%EigOfOpt为选项层的特征向量

EigOfCri=zeros(x,1);%准则层的特征向量

EigOfOpt=zeros(y,x);

dim=x;%维度

RI=[0

0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI标准

%生成成对比较阵

for

i=1:dim

CToT(i,:)=input('请输入数据:');

end

CToT

%输出

pause,

tempmatrix=zeros(x+1);

tempmatrix=AHP1(dim,CToT);

EigOfCri=tempmatrix(1:x);

ci1=tempmatrix(1+x);

EigOfCri

ci1

pause,

matrix=cell(x);%元胞数组

ci=zeros(1,x);

dim=y;

for k=1:x

matrix{k}=zeros(dim,dim);

%生成成对比较阵

for i=1:dim

matrix{k}(i,:)=input('请输入数据:');

end

%判断该比较阵是不是一致阵

tempmatrix=zeros(y+1);

tempmatrix=AHP1(dim,matrix{k});

EigOfOpt(:,k)=tempmatrix(1:y);

ci(k)=tempmatrix(y+1);

EigOfOpt(:,k)

ci(k)

pause,

end

%下面进行组合一致性检查

RI=[0

0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49

1.51];

CR=ci1/RI(x)+ci*EigOfCri/RI(y);

CR

if CR>0.1

disp('组合一致性不通过,请重新评分')

return

end

%下面根据比较阵的结果进行组合

result=EigOfOpt*EigOfCri;

result

function f=AHP1(dim,CmpMatrix)

RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];

%判断该比较阵是不是一致阵

%判断该比较阵是不是一致阵

[V,D]=eig(CmpMatrix);%求得特征向量和特征值

%求出最大特征值和它所对应的特征向量

tempNum=D(1,1);

pos=1;

for

h=1:dim

if D(h,h)>tempNum

tempNum=D(h,h);

pos=h;

end

end

eigVector=V(:,pos);

maxeig=D(pos,pos);

maxeig

dim

CI=(maxeig-dim)/(dim-1);

CR=CI/RI(dim);

if CR>0.1

disp('准则对目标影响度评分生成的矩阵不是一致阵,请重新评分')

return

end

CI

%归一化

sum=0;

for h=1:dim

sum=sum+eigVector(h);

end

sum

pause,

for h=1:dim

eigVector(h)=eigVector(h)/sum;

end

f=[eigVector;CI];

开始一直运行错误,我把几个函数分开以后,可以运行,但是我现在看不明白这个程序里的

CToT(i,:)=input('请输入数据:');

与 matrix{k}(i,:)=input('请输入数据:');

到底输入的是什么数据。

请大家帮帮我吧,快崩溃了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值