2016-11-28 29 views
0

我正在編寫一個Matlab工具,並且某些過程必須自動化。Matlab:決定一個值是否在nx2矩陣的列條目之間

我正在運行一個for循環,其中需要做出一些決定。這裏是一塊我的代碼:

DecisionMatrix = [0.2 0.4; 0.5 0.7]; 

     Beta =0:pi/20:pi; 
     Span_Loc = 0.5*(1-cos(Beta))'; 

     for i=1:length(Span_Loc) 
      Position = Span(i) 

    % Check Clean of High Lift 
    if Position >= DecisionMatrix(1,1) && Position <= DecisionMatrix(1,2) 

% HighLift run code here 

    elseif Position >= DecisionMatrix(2,1) && Position <= DecisionMatrix(2,2) 



    else 

% Clean run code here 
    end 

     end 

這裏,DecisionMatrix是一個可變尺寸矩陣是NX2總是。我想要做的是確定何時Position的值在DecisionMatrix的任何行的條目之間。當DecisionMatrix是一個常數矩陣時(如上所示),這應該很容易。但是,這個矩陣具有可變數量的行。

因此,你會如何做到這一點?

在此先感謝!

回答

2

爲了確定何時的Position(標量)的值是DecisionMatrix(2列矩陣)中的任何行的條目之間:

result = any(Position>=DecisionMatrix(:,1) & Position<=DecisionMatrix(:,2)); 

上面給出logical結果truefalse) 。如果你需要知道,滿足條件的行的指數:

result = find(Position>=DecisionMatrix(:,1) & Position<=DecisionMatrix(:,2)); 
+1

謝謝你的工作!我其實只需要合乎邏輯的結果,但謝謝你提供的信息。 –

1

您可以通過引入另一個循環,走出它,當你找到所需要的行修復你的代碼。

DecisionMatrix = [0.2 0.4; 0.5 0.7]; 
Beta =0:pi/20:pi; 
Span_Loc = 0.5*(1-cos(Beta))'; 

for p=1:length(Span_Loc) 
    Position = Span(p); 
    for q=1:n 
     if Position >= DecisionMatrix(q,1) && Position <= DecisionMatrix(q,2) 
      %do what you want when the condition is true 
      break 
     end 
    end 
end 
相關問題