将输出用作Simulink中Matlab功能块的新输入
在我的Simulink模型中,有三个输入到Matlab功能块中。输入包括一个1D数组将输出用作Simulink中Matlab功能块的新输入,matlab,simulink,Matlab,Simulink,在我的Simulink模型中,有三个输入到Matlab功能块中。输入包括一个1D数组taarray和两个变量currentIndex和trackingError。Matlab功能块将输出两个变量,分别称为newIndex和theta 使用newIndex变量作为Matlab功能块的新输入,理想的方法是什么 以下是模型中Matlab功能块的代码: function [newIndex,theta] = arraySelector(thetaArray,currentIndex,trackingE
taarray
和两个变量currentIndex
和trackingError
。Matlab功能块将输出两个变量,分别称为newIndex
和theta
使用newIndex
变量作为Matlab功能块的新输入,理想的方法是什么
以下是模型中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
function[newIndex,theta]=数组选择器(数组,当前索引,跟踪错误)
如果currentIndex
你的问题不清楚你是否
需要在单个时间步内求解代数循环,或
您希望您的模型能够随着循环的每次迭代而及时推进李>
对于第二种情况:
这是比较容易的情况。(在研究模型时更可能)。在这里,您将通过引入延迟块来打破循环。延迟块的初始条件将是您现在在示例中定义的(块θ_1)
对于第一种情况:
请按照中的说明进行操作。我建议您首先学习使用标量而不是数组的示例。您需要定义索引的初始条件,例如,通过在循环中引入一个IC块(就像您对trackingerror所做的那样)。如果Simulink仍然无法解决代数循环,那么在Matlab函数块内部考虑另一个实现,它改变了输入的状态。
通过单元延迟块将其发回。