簡體   English   中英

MATLAB 如何寫一個for循環有2個條件,一個是“==”,另一個是“~=”?

[英]MATLAB how to write a for loop with 2 conditions, one is “==”, the other is “~=”?

我正在嘗試在 Simulink 中編寫一個 S-Function,輸入“t”表示時間,“LIBs”表示進入系統的材料量。 有2個輸出。 這個想法在 Simulink 中是這樣的。 Simulink model 概念

我想要做的是,在某個時間迭代中,輸入“LIBs”轉到不同的 output。 但是在迭代過程中,有一些特殊點我不希望將 go 輸入到任何 output。

代碼是這樣的:

MATLAB

function [Batts_Spent, Batts_N_Spent] = BattsL6Y(t, LIBs)
for t = 2011:6:2035 
    if t ~= 2005:10:2035
        Batts_Spent = LIBs;
    end
end
for t = 2015:10:2035 
    if t ~= 2005:6:2035
        Batts_N_Spent = LIBs;
    end
end
for t = 2011:6:2035 
    if t == 2015:10:2035
        Batts_Spent = LIBs;
    end
end
end

我確定這段代碼不正確,但我不知道如何正確編寫它。

而且,即使我有多個輸入和 output 端口,Simulink 項目中的 S-Function 模塊仍然只有一個輸入和 output 端口。 我應該將其更改為 MATLAB Function 塊嗎?

在您的情況下, t是一個輸入參數,這使得它看起來像為每個 t 值調用 function。 然后你有一個循環遍歷t的所有值。 考慮到您的形象,您根本不需要循環。 您可以將ifmod結合使用。 例如:

function [Batts_Spent, Batts_N_Spent] = BattsL6Y(t, LIBs)
if mod(t-2005,6)==0 && t>=2005
  Batts_Spent = LIBs;
end
end

這只是“每 6 次將 LIB 的值分配給第一個輸出”。 這不是一個完整的解決方案,但應該足以讓您入門。 如果其他 output 像這樣,您需要一秒鍾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM