对于在MATLAB中具有成对条件/变量的循环

时间:2017-06-23 07:03:50

标签: matlab for-loop simulink

我有一个关于使用带有成对变量的for循环的问题。

现在我正在使用循环:

For i=1:1:10
Code
End

代码执行Simulink模型。我需要在这个模型中引入两个变量。一个是Torque(A1-A10),另一个是TriggerTime(B1-B10)。但我需要成对使用它们。因此,例如我想用A1,B1,i(1)条件执行模型,下一次迭代使用A2,B2,i(2)等等。我在考虑类似的事情:

TriggerTime= [B1 B2. ..B10]
Torque=[ A1 A2… A10]
YY = 1;
For i= 1:1:10
TriggerTime[1,YY];
Break torque[1,YY];
Y= Y +1;
Code
End

纯粹在MATLAB中我认为这个代码可以工作(或不工作?)。但是当谈到我的Simulink模型时,它会让它变得更复杂一些:

ERROR_MESSAGE:

Error_message

Simulink_model_part:

Simulink_model_part

我试图弄清楚如何管理这些问题,但却无法解决。我可以看到它应该很简单,但无法理解我如何调整代码。

1 个答案:

答案 0 :(得分:0)

很难回答关于Simulink的问题,因为提供的关于模型的信息很少,但是你在简单的for循环中遇到了一些问题,这让我想到问题就在于它。

这是你的例子:

TriggerTime= [B1 B2. ..B10]
Torque=[ A1 A2… A10]
YY = 1;
For i= 1:1:10
TriggerTime[1,YY];
Break torque[1,YY];
Y= Y +1;
Code
End

这些是一些问题:

  • 您没有在for循环中使用for变量i
  • 然而,您手动递增变量Y,但也未使用。
  • for循环变量i的初始化包含冗余1,应该只读取i=1:10
  • 您没有缩进for循环中的代码,这会降低可读性并增加错误风险。
  • 当你应该使用普通括号()时,你试图使用方括号[]来访问数组元素。
  • 你在for循环中使用了一个关键字[break][1],它终止了for循环。
  • 条件变量TriggerTimeTorque的初始化会产生两个1D数组,但是你期望在for循环中有两个2D数组,因为你给出了两个索引,{{ 1}}。

尝试使用for循环,看看它是否更好:

[1,YY]