簡體   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