シミュレーションを行う別の関数に要素ごとに入力したい数値の配列(randparam)を計算する関数があります。
例えば
function [randparam] = arraycode
code
randparam = results of code
% randparam is now a 1x1001 vector.
end
次に、シミュレーション関数にrandparamを1つずつ入力します
function simulation
x = constant + constant * randparam + constant
return
end
私にとってこれを難しくしているのは、シミュレーション関数のreturnコマンドのためです。これは、上記の式xの1つのステップのみを計算し、結果を別の関数に返し、それを積分器と呼びます。その後、積分器関数はシミュレーション関数を再度呼び出します。 xを計算します。
したがって、積分器関数は次のようになります。
function integrator (x)
y = simulation(x) * 5
u = y+10
yy = simulation(x) * 10 + u
end
ご覧のとおり、積分器関数はシミュレーション関数を2回呼び出します。これは私にとって2つの問題を引き起こします:
シミュレーション関数でforループを作成し、次のようなものを使用して要素ごとに入力するとします。
i = 1:100の場合
x=定数+定数*randparam(i)+定数
リターン
エンド
その後、積分器関数がシミュレーション関数を再度呼び出すたびに、forループが最初から1から始まります。
2.シミュレーション関数のforループが1からステップアップすることを認識できるように、ベースワークスペースにiを保持した場合、2番目の関数と呼ばれるとすぐにy関数とyy関数のx入力が異なります。 yyの時間の場合、yによる呼び出しのおかげで、iはi+1になります。
このシナリオでforループを回避する方法はありますか?問題2の解決策の1つは、スクリプトを複製して名前を変え、forループに別の変数を使用させることですが、これはかなり非効率的です。
私がこれを明確にしたことを願っています。
ありがとう。