簡體   English   中英

將輸出用作Simulink中Matlab功能塊的新輸入

[英]Use the Output as the New Input into Matlab Function block in Simulink

我在Simulink模型的Matlab功能塊中有三個輸入。 輸入由一維數組thetaArray和兩個變量currentIndextrackingError Matlab功能塊將輸出兩個名為newIndextheta變量。

使用newIndex變量作為Matlab Function模塊的新輸入的理想方式是什么?

這是我的Simulink模型的圖像

這是模型中Matlab功能塊的代碼

function [newIndex,theta] = arraySelector(thetaArray,currentIndex,trackingError)

if currentIndex < length(thetaArray) && trackingError <= 0.00002
   newIndex = currentIndex + 1;
else
   newIndex = currentIndex;
end

theta = thetaArray(newIndex);
end

先感謝您。

如果theta將成為模型的輸出和輸入,那么您將擁有一個包含代數循環的模型。

從您的問題尚不清楚您是否

  1. 需要在單個時間步內求解代數環,或者
  2. 您希望模型在每次循環迭代時都能及時進行。

對於第二種情況:

這是較容易的情況。 (研究模型時更有可能)。 在這里,您將通過引入延遲塊來打破循環。 延遲塊的初始條件將是您現在在示例中定義的條件(塊theta_1)。

對於第一種情況:

請遵循如何處理模型中的代數循環中的描述。 我建議您首先學習一個使用標量而不是數組的示例。 您需要定義索引的初始條件,例如通過在循環中引入一個IC塊(就像您對trackingerror所做的那樣)。 如果simulink仍然無法解決代數循環,可以考慮在Matlab功能塊內選擇一種替代實現,改變輸入的狀態。 從直接饋通到非直接饋通

暫無
暫無

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

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