美文网首页
Matlab 处理数据—最小值、最大值、均值、方差

Matlab 处理数据—最小值、最大值、均值、方差

作者: 绿毛水怪的海 | 来源:发表于2020-08-05 10:17 被阅读0次

      最近做了一个matlab实验任务,主要是将数据文档中的数据进行处理。考虑到数据文件的保密性,本文就简单介绍一下实验中用到的函数和语法。

    实验数据以及实验目的

      新建了一个数据文件data.txt,文件内容主要包括最小value(第一行);方案组合(color,size,length);表头(run no., number, value);以及具体的数字。
    -run no.——运行次数序号,每个组合运行五次;
    -number——每次运行中第一次达到最优值的迭代次数;
    -value——运行得到的最优值;
      本次实验的目的是得到每个组合中达最优值(最小值 456.7)的迭代次数的最小值、最大值、均值以及方差。


    data.txt

    代码实现

    1. matlab读取文件,并输出“The minimal is 456.7”

    %% 读取数据
    fid = fopen('matlab实验-简书\data.txt','r+');
    FormatString=repmat('%s',1,3);
    A=textscan(fid,FormatString,1,'HeaderLines',0);
    A1=A{1};
    A2=cell2mat(A1);
    formatSpec ='The minimal is %s.\n';
    fprintf(formatSpec,A2)
    

    2. 输出列名

    %% 输出列名
    s1='     ';
    num='      num';
    m1='   min';
    m2='   max';
    m3='   mean';
    fdev='         fdev';
    fprintf('%s %s %s %s %s %s\n',s1,num,m1,m2,m3,fdev);
    

    3. 处理行名及数据内容

    %% 处理行名及求数据
    for x=1:7:14
        %处理行名,将组合名称缩写
        fid = fopen('matlab实验-简书\data.txt','r+');
        B=textscan(fid,FormatString,1,'HeaderLines',x);%从文件的第x行开始取数据,取1行数据
        B1=B{1};
        B2=cell2mat(B1);
        line_short=strrep(B2,'red','re'); 
        line_short=strrep(line_short,'blue','bl');
        line_short=strrep(line_short,'big','bi');
        line_short=strrep(line_short,'small','sm');
        line_short=strrep(line_short,'long','lo');
        line_short=strrep(line_short,'short','sh');
        %
        C=textscan(fid,FormatString,5,'Headerlines',2);%接上面的B,从第x行后的第二行(x+2行)开始取数据,取5行
        C1=C{3};
        C1C=C{2};
        C2=cell2mat(C1);
        %将每个组合运行5次中达到最小值的number放进矩阵
         C3=string(C2);
        C4=vpa(C3,6);
        C5=string(A2);
    
        i=1;
        xx=strings;
        for y=1:5
            if (C3(y)==C5)
                yy=C1C{y};
                xx(i)=yy;
                i=i+1;
            end
        end 
         
        C6=double(xx);
        le=length(C6(:));
        count=le;
        %计算每个组合5次运行中达到最小值的number的最小值、最大值、均值
        data_min=min(C6(:));
        data_max=max(C6(:));
        C9=mean(C6(:));
        data_mean=vpa(C9,4);
        C11=0;
        %计算方差
        for j=1:le
            C11=C11+(C6(j)-C9)^2;
        end
        C12=C11./(le-1);
        data_fdev=vpa(C12,6);
        %打印数据
        fprintf('%s:%6.0f %6.0f %6.0f %7.0f %13.3f\n',line_short,count,data_min,data_max,data_mean,data_fdev);
        fclose(fid);
    end
    

    代码结果

    最终的实验结果如下:


    实验结果

    注:

      本次实验代码不严谨,只是保证结果运行策略,没有进行规范化书写,毕竟只是个作业哈~

    相关文章

      网友评论

          本文标题:Matlab 处理数据—最小值、最大值、均值、方差

          本文链接:https://www.haomeiwen.com/subject/bnrprktx.html