Matlab 版 (精华区)

发信人: zjliu (秋天的萝卜), 信区: Matlab
标  题: 矩阵X的标准化程序
发信站: BBS 哈工大紫丁香站 (Fri Mar 25 15:41:54 2005)

发信站: 日月光华 

%%注意换行
%标准化数据处理的程序
          clear all
          close all
          clc
          [file1,path1]=uigetfile('*.*','打开数据文件');
          filename1=strcat(path1,file1);
          fid1=fopen(filename1,'r');
          prompt={'行数即样本总数','列数即因子数'};
          def={'  ','  '};
          lineNo=1;
          dlgTitle='请输入参数,标准化数据的程序,吴建生';
          answer=inputdlg(prompt,dlgTitle,lineNo,def);
          answer=char(answer);
          ny=str2num(answer(1,:));
          nx=str2num(answer(2,:));
          [file2,path2]=uiputfile('*.*','请选择要保存结果的文件夹');
          filename2=strcat(path2,file2);
          fid2=fopen(filename2,'w');
          A1=fscanf(fid1,'%f');
          B1=reshape(A1,nx,ny)';
fprintf(fid2,'###############******原始数据未经处理******################\n')

;
           for i=1:ny
               for j=1:nx
                  fprintf(fid2,'%10.5f',B1(i,j));
               end
               fprintf(fid2,'\n');
            end
            fclose(fid1);
           C1=(B1-repmat(mean(B1),ny,1))./repmat(std(B1),ny,1);
           f1=max(B1)-min(B1);
           C2=(B1-repmat(min(B1),ny,1))./repmat(f1,ny,1);
           %用命令标准化过程
           CC1=prestd(B1');
           CC1=CC1';
           CC2=premnmx(B1');
           CC2=CC2';
  fprintf(fid2,'###############*****均值方差标准的结果*******################

\n');
           for i=1:ny
               for j=1:nx
                  fprintf(fid2,'%10.5f',C1(i,j));
               end
               fprintf(fid2,'\n');
            end
fprintf(fid2,'###############*****极大极小化标准的结果*******################

\n');
            for i=1:ny
               for j=1:nx
                  fprintf(fid2,'%10.5f',C2(i,j));
               end
               fprintf(fid2,'\n');
            end
fprintf(fid2,'###############*****prestd标准的结果*******################\n')

;
           for i=1:ny
               for j=1:nx
                  fprintf(fid2,'%10.5f',CC1(i,j));
               end
               fprintf(fid2,'\n');
            end
fprintf(fid2,'###############*****premnmx标准的结果*******################\n'

);
           for i=1:ny
               for j=1:nx
                  fprintf(fid2,'%10.5f',CC2(i,j));
               end
               fprintf(fid2,'\n');
            end
             fclose(fid2);
注:C1和CC1的结果相同
    C2和CC2的结果不同
    C2是标准化[0, 1]区间到而CC2是标准化[-1, 1]的区间到.
--
╔═══════════════════╗
║★★★★★友谊第一  比赛第二★★★★★║
╚═══════════════════╝

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 天外飞仙]


※ 来源:·哈工大紫丁香 http://bbs.hit.edu.cn·[FROM: 202.118.229.*]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:7.435毫秒