在 MATLAB 中使用成对 conditions/variables 进行循环

For loop with pair-wise conditions/variables in MATLAB

我有一个关于将 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:

Simulink_model_part:

我试图找出解决这些问题的方法,但没成功。我可以看到它应该很简单,但不明白如何调整代码。

很难回答关于 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 的初始化会产生两个一维数组,但您期望在 for 循环内有两个二维数组,因为您给出了两个索引, [1,YY].

试试这个 for 循环,看看效果是否更好:

TriggerTime = [B1 B2 ... B10];
Torque = [A1 A2 ... A10];
for i = 1:10
    currentTriggerTime = TriggerTime(i);
    currentTorque = Torque(i);
    Code
end