0

我希望 fsolve 每次计算不同 uc 的输出(每次将 uc 增加 0.001)。fsolve 的每个输出都应单独发送到 simulink 模型。所以我设置了一个循环来这样做,但我相信在当前星座(如果它会工作)只会计算 1000 个不同的值?有没有办法单独发送值?

如果没有,我该如何创建参数 uc。从0到1000?我尝试了 uc=0:0.001:1000,但同样,尺寸似乎不合适。

每次调用函数时,如何创建一个获取向量/矩阵的下一个元素的函数?

此致

4

1 回答 1

0

迭代一组值并将它们逐个输入到函数的一系列评估中的一般方法遵循以下形式:

for ix = 0:0.1:10
   func(arg1, arg2, ix)
end

查看每次调用如何func包含 的当前值ix?在第一次迭代ix==0中,在下一次迭代中,ix==0.1依此类推。您应该能够根据自己的需要进行调整;在您的代码中,循环索引(您称之为i)未在循环内使用。

现在对您的代码进行一些未经要求的批评。线条

x0=[1,1,1];
y=x0(1);
u=x0(2);
yc=x0(3);
options=optimset('Display','off'); 

不要随着循环迭代的进行而改变;无论循环迭代器(i在您的代码中)的值是多少,它们总是返回相同的值。将它们包含在循环中是没有意义的。

如果 Matlab 决定在每次迭代时计算它们,将它们留在循环中甚至可能会浪费大量时间。我不确定Matlab在这种情况下会做什么,它可能足够聪明,可以确定这些值在每次迭代中都不会改变,但即使这样做,以这种方式编写代码也是不好的编程习惯;将诸如此类的常量表达式提升到循环之外。

从您发布的片段中不清楚您定义的原因yu而且yc根本没有在任何地方使用它们;也许它们被用于您程序的其他部分。

于 2012-07-06T09:13:21.703 回答