matlab 数学建模 最常用的主成分分析 输出得分排名

主成分分析和层次分析法应该是建模比赛中最常用的几个方法之一了
下面的代码我没记错应该是摘自司守奎老师的建模书,然后加上的注释
matlab程序

clc,clear
sj=xlsread('20.xlsx','Sheet2'); %取得数据
sj=zscore(sj);  %数据标准化
corr=corrcoef(sj); %计算相关系数矩阵
%利用相关系数矩阵进行主成分分析,x的列为corr的特征向量,及主成分的系数
[x,y,z]=pcacov(corr);  %;y为r的特征值,z为各个主成分的贡献率
contr=cumsum(z)%计算累计贡献率
f=repmat(sign(sum(x)),size(x,1),1); %构造与x同维数的元素为±1矩阵
x=x.*f; %修改特征向量的正负号,每个特征向量乘以所有分量和的符号函数值
num=3; %选取的主成分个数
df=sj*x(:,[1:num]); %计算各个主成分的得分
sdf=df*z(1:num)/100 ; %计算综合得分
[stf,ind]=sort(sdf,'descend');%sort排序函数,descend降序
stf=stf',ind=ind'%显示得分和排名
xlswrite('20.xlsx',stf,'Sheet3');
%xlswrite('文件名.xlsx',[stf(1,:);ind(1,:);stf(2,:);ind(2,:);stf(3,:);ind(3,:);],'b1:h8')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值