我有一个函数可以计算一个数字数组(randparam),我想将它逐个元素地输入到另一个进行模拟的函数中。
例如
function [randparam] = arraycode
code
randparam = results of code
% randparam is now a 1x1001 vector.
end
接下来我想将 randparam 1 by 1 输入到我的模拟函数中
function simulation
x = constant + constant * randparam + constant
return
end
让我感到困难的是因为模拟函数中的return命令,它只计算上面方程x的一步,将结果返回到另一个函数,调用它积分器,然后积分器函数会再次调用模拟函数来计算 x。
所以积分器功能可能看起来像
function integrator (x)
y = simulation(x) * 5
u = y+10
yy = simulation(x) * 10 + u
end
如您所见,积分器函数调用了模拟函数两次。这给我带来了两个问题:
如果我在模拟函数中创建一个 for 循环,在其中我使用以下内容逐个元素输入:
对于 i = 1:100
x = 常数 + 常数 * randparam(i) + 常数
返回
端
然后每次我的积分器函数再次调用我的模拟函数时,我的 for 循环又从 1 开始。
2.如果我如何将 i 保存在我的基本工作区中,以便我的模拟函数中的 for 循环知道从 1 开始,那么我的 y 和 yy 函数将具有不同的 x 输入,因为一旦它被称为第二个yy 的时间,那么由于 y 的来电,我现在是 i+1。
在这种情况下有没有办法避免 for 循环?第二个问题的一个潜在解决方案是复制脚本但使用不同的名称,并让我的 for 循环使用不同的变量,但这似乎效率很低。
希望我说清楚了。
谢谢。