【问题标题】:For loop with pair-wise conditions/variables in MATLAB在 MATLAB 中具有成对条件/变量的 For 循环
【发布时间】:2017-06-23 07:03:49
【问题描述】:

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

现在我正在使用循环:

For i=1:1:10
Code
End

代码执行 Simulink 模型。我需要在这个模型中引入两个变量。一个是扭矩 (A1–A10),另一个是触发时间 (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 模型时,它就有点复杂了:

错误消息:

Simulink_model_part:

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

【问题讨论】:

  • 检查 matlab-command set_param.
  • 谢谢你,萨达尔。不幸的是,它没有成功。它仍然给我一个错误。

标签: matlab for-loop simulink


【解决方案1】:

很难回答有关 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 的初始化会产生两个一维数组,但由于您要提供两个索引[1,YY],因此您期望在for 循环中有两个二维数组。李>

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

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

【讨论】:

  • 除上述之外,currentTriggerTimecurrentTorque 是应该在 Simulink 模型中使用的变量,大概是使用 sim 调用的(尽管指出 OP 尚未发布有关他们如何与 Simulink 交互的足够信息)。
  • 谢谢你,卡洛斯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 2021-02-16
  • 2013-01-27
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
相关资源
最近更新 更多