2017-03-09 37 views
0

所以我有此數據Matlab的發現通過忽略最小值零和一定條件

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. if yi> = 0 then output = max row SDATA
  2. 如果義< 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' 
的輸出數
+0

只是你的數據在[0,1]? – semm0

+0

是它介於0和1之間,包括那個數字 –

回答

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)返回符合指定條件的元素。

+0

非常感謝你,最後我得到了我想要的答案.. –