我希望fsolve每次计算不同uc的输出(每次增加uc 0.001 )。fsolve的每个输出应分别发送到simulink模型。所以我设置了一个循环来这样做,但我相信在当前星座(如果它可以工作的话)将只计算1000个不同的值?有没有一种方法可以单独发送这些值?
如果没有,如何创建参数uc。从0到1000?我尝试了uc=0:0.001:1000,但同样,维度似乎不适合。
如何创建一个函数,在每次调用该函数时获取向量/矩阵的下一个元素?
诚挚的问候
发布于 2012-07-06 17:13:22
迭代一个值数组并将它们逐个提供给函数的一系列计算的一般方法如下:
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在这种情况下做了什么,它可能足够聪明,可以计算出这些值在每次迭代中都不会改变,但即使它这样做了,以这种方式编写代码也是糟糕的编程实践;将像这样的常量表达式从循环中移除。
从您发布的代码片段中,根本不清楚为什么要定义y、u和yc,它们不会在任何地方使用;也许它们会在程序的其他部分使用。
https://stackoverflow.com/questions/11356399
复制相似问题