matlab 循环程序,matlab循环程序只得到一个结果

如题。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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值