Matlab通过忽略零和特定条件找到最小值

Matlab find minimum value by ignoring zero and certain condition

所以我有这个数据

 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

我做空数据变成这样

s数据=

     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. if yi >= 0 then output = max row sdata
  2. if yi < 0 theris 2 条件:

    一个。如果 sdata 成员只有 0 和 1 那么输出 = 最小行 sdata =0

    b。如果 sdata 成员包括 0 和 1 之间的数字,则输出 = min sdata except zero

所以我想找到这样的输出

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'

试试这个:

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

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