Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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
MATLAB中带成对条件/变量的For循环_Matlab_For Loop_Simulink - Fatal编程技术网

MATLAB中带成对条件/变量的For循环

MATLAB中带成对条件/变量的For循环,matlab,for-loop,simulink,Matlab,For Loop,Simulink,我有一个关于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:

我有一个关于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\u型号\u部件:


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

很难回答关于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循环
  • 条件变量
    TriggerTime
    Torque
    的初始化会产生两个1D数组,但由于您给出了两个索引
    [1,YY]
    ,因此在for循环中需要两个2D数组
尝试此for循环,看看是否效果更好:

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

很难回答关于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循环
  • 条件变量
    TriggerTime
    Torque
    的初始化会产生两个1D数组,但由于您给出了两个索引
    [1,YY]
    ,因此在for循环中需要两个2D数组
尝试此for循环,看看是否效果更好:

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

检查matlab命令set_param。谢谢你,Sardar。不幸的是,它没有成功。它仍然给我一个错误。检查matlab命令set_param。谢谢你,Sardar。不幸的是,它没有成功。这仍然给了我一个错误。除此之外,
currentTriggerTime
currentTorque
是Simulink模型中应该使用的变量,可能被称为使用
sim
(尽管OP没有发布足够的关于它们如何与Simulink交互的信息)。谢谢,Carlos.除此之外,
currentTriggerTime
currentTorque
是Simulink模型中应该使用的变量,可能使用
sim
进行调用(尽管正如指出的,OP没有发布足够的关于它们如何与Simulink交互的信息)。谢谢你,Carlos。