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

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/23 11:46:58
matlab中把这段代码保存到m文件后,要输入什么代码才能使用这段函数,我的矩阵怎样才能利用这段代码运算?%cwstd.m,用总和标准化法标准化矩阵functionstd=cwstd(vector)c

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)就可以调用这些函数了.