繁体   English   中英

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

我说数据变得像这样

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,则输出=最大行sdata
  2. 如果yi <0 theris 2条件:

    一种。 如果sdata成员只有0和1,则输出=最小行sdata = 0

    b。 如果sdata成员包括0到1之间的数字,则输出=最小sdata,但零除外

所以我想找到这样的输出

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,:)>0返回表0和1, sdata(i,sdata(i,:)>0)返回满足指定条件的元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM