matlab中把这段代码保存到m文件后,要输入什么代码才能使用这段函数,我的矩阵怎样才能利用这段代码运算?%cwstd.m,用总和标准化法标准化矩阵function std=cwstd(vector)cwsum=sum(vector,1); %对列求和[a,b]=

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/25 13:38:07
matlab中把这段代码保存到m文件后,要输入什么代码才能使用这段函数,我的矩阵怎样才能利用这段代码运算?%cwstd.m,用总和标准化法标准化矩阵function std=cwstd(vector)cwsum=sum(vector,1); %对列求和[a,b]=
xV[OG+HdqH!j_#E^{ml<i4-$6?<zfTm*UCss3%Z&Ɓh~#'zM"g5?q=r[9o^~>iYsgc\ެ;\p~yў_+u4C%pt&2'Yhn^G#F጑0%pQ<3qyPFZ=-cHhB K|ρF!$icN ooviH4j f6kC"%j`D)8%d)E00? )efPjxo)= QNd&ɔafSn# a#AODs޽;wwW~}qOh-_WO6&j1쥸)nLp/X:t"troSz5bhPYbCTFF Pp"1]9qˌgH"vw$lKA4ﮄQ9Tts2f9EB~-p}L`)-a~{):kD(ܳN\ucԷ4ĨZY\zk?yZ)mZQ 55~c-)ҵuVj:Ug*jaNn`inoa끫^dFΗh~ Za2X4pq[-idX.31'ϐgD r?9(Uh_P/ 3҈NX/HИ -,T߯{Aza񭃐4S]jXYǸ;n1 w ؃҂ ˏUf~|fg)/M.T=5W-X^%}w~1Y\2{b+-iqV]CL0#FI>PBvh:QGlAԤD?ҝǏWM=|6xAEׁ(G^ޅR%1x<˳ e~Ȑ2W~gFaiVKZ(KWi4?2+Cc]ʶ^~l5A `p'$}ۏ9aug Ԏ "ϭWi{7JbKj8C'Y`-ߢH;uܑ.~ɳ0%"U$\*]mX4V{ VBU*zi/σ\pPˢ>SUDCX1sAt)*_C5"}tzǯa*>xZu'8i4q63

matlab中把这段代码保存到m文件后,要输入什么代码才能使用这段函数,我的矩阵怎样才能利用这段代码运算?%cwstd.m,用总和标准化法标准化矩阵function std=cwstd(vector)cwsum=sum(vector,1); %对列求和[a,b]=
matlab中把这段代码保存到m文件后,要输入什么代码才能使用这段函数,我的矩阵怎样才能利用这段代码运算?
%cwstd.m,用总和标准化法标准化矩阵
function std=cwstd(vector)
cwsum=sum(vector,1); %对列求和
[a,b]=size(vector); %矩阵大小,a 为行数,b 为列数
for i=1:a
for j=1:b
std(i,j)= vector(i,j)/cwsum(j);
end
end
%cwfac.m
function result=cwfac(vector);
fprintf('相关系数矩阵:\n')
std=CORRCOEF(vector) %计算相关系数矩阵
fprintf('特征向量(vec)及特征值(val):\n')
[vec,val]=eig(std) %求特征值(val)及特征向量(vec)
newval=diag(val) ;
[y,i]=sort(newval) ; %对特征根进行排序,y 为排序结果,i 为索引
fprintf('特征根排序:\n')
for z=1:length(y)
newy(z)=y(length(y)+1-z);
end
fprintf('%g\n',newy)
rate=y/sum(y);
fprintf('\n 贡献率:\n')
newrate=newy/sum(newy)
sumrate=0;
newi=[];
for k=length(y):-1:1
sumrate=sumrate+rate(k);
newi(length(y)+1-k)=i(k);
if sumrate>0.85 break;
end
end %记下累积贡献率大于85%的特征值的序号放入newi 中
fprintf('主成分数:%g\n\n',length(newi));
fprintf('主成分载荷:\n')
for p=1:length(newi)
for q=1:length(y)
result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));
end
end %计算载荷
disp(result)
%cwscore.m,计算得分
function score=cwscore(vector1,vector2);
sco=vector1*vector2;
csum=sum(sco,2);
[newcsum,i]=sort(-1*csum);
[newi,j]=sort(i);
fprintf('计算得分:\n')
score=[sco,csum,j]
%得分矩阵:sco 为各主成分得分;csum 为综合得分;j 为排序结果
%cwprint.m
function print=cwprint(filename,a,b);
%filename 为文本文件名,a 为矩阵行数(样本数),b 为矩阵列数(变量指标数)
fid=fopen(filename,'r')
vector=fscanf(fid,'%g',[a b]);
fprintf('标准化结果如下:\n')
v1=cwstd(vector)
result=cwfac(v1);
cwscore(v1,result);
我执行了一下
cwprint(abc.txt,4,4)
Undefined variable "abc" or class "abc.txt".

matlab中把这段代码保存到m文件后,要输入什么代码才能使用这段函数,我的矩阵怎样才能利用这段代码运算?%cwstd.m,用总和标准化法标准化矩阵function std=cwstd(vector)cwsum=sum(vector,1); %对列求和[a,b]=
这段程序分为四个子程序,保存成四个文件:cwstd.m,cwfac,cwscore.m,cwprint.m
这四个文件夹放在同一个文件夹,把这个文件夹的路径添加到matlab的工作目录
然后在命令行窗口输入cwprint (filename,a,b)
其中filename 为文本文件名,a 为矩阵行数(样本数),b 为矩阵列数(变量指标数)
比如cwprint (abc.txt,4,4)
这里的abc是我举得例子,你可以在这四个m文件所在的文件夹中随便建立一个txt文件,然后把自己的矩阵输到这个txt文件中,比如这个txt文件命名为abc.txt,那么在命令行窗口输入cwprint (filename,4,4)就可以调用这些函数了.