Matlab通过忽略零和某些条件来找到最小值

时间:2017-03-09 17:31:15

标签: matlab conditional-statements zero minimum

所以我有这个数据

 yi =

    -1
     1
     1
    -2
     4
data=
    1.0000         0    1.0000    0.2000    1.0000    1.0000
         0         0         0    0.5000    1.0000    1.0000
    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000
         0         0         0         0    1.0000         0
    1.0000         0         0         0    1.0000         0

我认为数据变得像这样

sdata =

     0    0.2000    1.0000    1.0000    1.0000    1.0000
     0         0         0    0.5000    1.0000    1.0000
1.0000    1.0000    1.0000    1.0000    1.0000    1.0000
     0         0         0         0         0    1.0000
     0         0         0         0    1.0000    1.0000

使用此规则

  1. 如果yi> = 0则输出= max row sdata
  2. 如果yi< 0 theris 2条件:

    一个。如果sdata成员只有0和1则输出= min row sdata = 0

    湾如果sdata成员包括0到1之间的数字,则输出= min sdata除零

  3. 所以我想找到像这样的输出

    output=
    
      0.2000
      1.0000
      1.0000
      1.0000
           0
      1.0000
    

    我仍然坚持这一点

     for i=1:5
            if yi(i)>=0
                output(i)=max(sdata(i,:));
            else
                output(i)=min(sdata(i,:));    
            end;
        end;
        outputnya=output'
    

1 个答案:

答案 0 :(得分:1)

试试这个:

else
  minVal = min(sdata(i,sdata(i,:)>0))
  if minVal == 1
    output(i)=min(sdata(i,:));
  else
    output(i) = minVal;
  end;
end;

说明:sdata(i,:)>0返回0和1的表,sdata(i,sdata(i,:)>0)返回满足指定条件的元素。