如题。matlab编程,for循环语句,本来要它循环100次,但是得到的结果却只有一个,本想得到100个的。
求牛人指点。整个程序较简单,很多类似语句,目的是求7种方法得到的列向量的7个离差平方和,这7个离差平方和组成一个向量result,排序成ssort向量,循环100次,得到ssort矩阵。整个程序如下:
row=10;%矩阵行数
col=10;%矩阵列数
result=ones(1,7);%设置离差平方和矩阵,在程序中自累加
b=ones(col,1);%初始化权重向量,标准化处理法
c=ones(col,1);%初始化权重向量,归一化处理法
d=ones(col,1);%初始化权重向量,线性最大
e=ones(col,1);%初始化权重向量,线性最小
f=ones(col,1);%初始化权重向量,线性均值
g=ones(col,1);%初始化权重向量,极值处理法
h=ones(col,1);%初始化权重向量,向量规范化
for k=1:100,%<<<<---------------最大循环次数
A=rand(row,col);% %随机产生决策矩阵,randn()表正态,rand()表均匀
B=A;%%标准处理法,标准化后的决策矩阵
C=A;%%归一化处理法,标准化后的决策矩阵
D=A;%%线性最大,标准化后的决策矩阵
E=A;%%线性最小,标准化后的决策矩阵
F=A;%%线性均值,标准化后的决策矩阵
G=A;%%极值处理法,标准化后的决策矩阵
H=A;%%向量规范化,标准化后的决策矩阵
for i=1:length(A(1,:)),%数据标准化处理
B(:,i)=(A(:,i)-mean(A(:,i),1))/std(A(:,i),1,1);%标准化处理法
C(:,i)=A(:,i)/sum(A(:,i)); %归一化处理法
D(:,i)=A(:,i)/max(A(:,i));%线性最大
E(:,i)=A(:,i)/min(A(:,i));%线性最小
F(:,i)=A(:,i)/mean(A(:,i));%线性均值
G(:,i)=(A(:,i)-min(A(:,i)))/(max(A(:,i))-min(A(:,i)));%极值处理法
H(:,i)=A(:,i)/norm(A(:,i));%向量规范法
end
b=(std(B,1)/sum(std(B,1)))';%注意列向量,需要转置,标准化处理法求权重
c=(std(C,1)/sum(std(C,1)))';%归一化处理法权重
d=(std(D,1)/sum(std(D,1)))';%线性最大权重
e=(std(E,1)/sum(std(E,1)))';%线性最小权重
f=(std(F,1)/sum(std(F,1)))';%线性均值权重
g=(std(G,1)/sum(std(G,1)))';%极值处理法权重
h=(std(H,1)/sum(std(H,1)))';%向量规范法权重
result_b=B*b;%标准化处理法,得到综合评价向量
result_c=C*c;%归一化处理法,得到综合评价向量
result_d=D*d;%线性最大,得到综合评价向量
result_e=E*e;%线性最小,得到综合评价向量
result_f=F*f;%线性均值,得到综合评价向量
result_g=G*g;%极值处理法,得到综合评价向量
result_h=H*h;%向量规范法,得到综合评价向量
result=[sum((result_b-mean(result_b)).^2),sum((result_c-mean(result_c)).^2),sum((result_d-mean(result_d)).^2),sum((result_e-mean(result_e)).^2),sum((result_f-mean(result_f)).^2),sum((result_g-mean(result_g)).^2),sum((result_h-mean(result_h)).^2)];%将7种方法得到的向量求离差平方和,组成新的向量
ssort=zeros(1,7);%初始化排序值向量
temp=sort(result,'descend');
for s=1:7,%确定离差平方和的排序
for t=1:7,
if result(s)==temp(t);
ssort(s)=t;break;
end
end
end
end