Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将输出用作Simulink中Matlab功能块的新输入_Matlab_Simulink - Fatal编程技术网

将输出用作Simulink中Matlab功能块的新输入

将输出用作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

在我的Simulink模型中,有三个输入到Matlab功能块中。输入包括一个1D数组
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函数块内部考虑另一个实现,它改变了输入的状态。

    通过单元延迟块将其发回。