zjjc.m

来自「MATLAB科学计算与工程分析源代码源程序3」· M 代码 · 共 50 行

M
50
字号
function [result,sum0]=zjjc(s,opt)
% 对正交试验进行极差分析,s是输入矩阵,opt是最优参数,其中
%若opt=1,表示最优取最大,若opt=2,表示最优取最小
%s=[  1     1  1    1  857;
%     1     2   2   2  951;
%     1     3   3   3  909;
%     2     1   2   3  878;
%     2     2   3   1  973;
%     2     3   1   2  899;
%     3     1   3   2  803;
%     3     2   1   3  1030;
%     3     3   2   1   927];
% s的最后一列是各个正交组合的试验测量值,前几列是正交表
[m,n]=size(s);
 p=max(s(:,1));%取水平数
 q=n-1;% 取列数
 sum0=zeros(p,q);
 for i=1:q
    for k=1:m 
         for j=1:p
          if(s(k,i)==j)
              sum0(j,i)=sum0(j,i)+s(k,n);%求和
          end
        end
     end
 end

maxdiff=max(sum0)-min(sum0);%求极差

result(1,:)=maxdiff;
if(opt==1)
    maxsum0=max(sum0);
    for kk=1:q
        modmax=mod(find(sum0==maxsum0(kk)),p);%求最大水平 
        if modmax==0
            modmax=p;
        end
        result(2,kk)=(modmax);
    end
else
   minsum0=min(sum0);
    for kk=1:q
        modmin=mod(find(sum0==minsum0(kk)),p);%求最小水平
        if modmin==0
            modmin=p;
        end
        result(2,kk)=(modmin);
    end 
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?