時間ベクトルと空間変数ベクトルの前の時間ステップに基づいて計算する非常微分方程式関数があります。
この関数のパラメーターの1つは定数です。ただし、そのパラメーターを変数にしたいのですが、これは特定の時間に基づいて変更されます。
これを明確にするためのサンプルコードを次に示します。
nstrains = 10;
param = .3*rand(1,nstrains);
strtime = rand(1,nstrains);
strtime = round(strtime);
strtime = sort(strtime);
initialconds = .5
t=0:.1:10; %time vector
x=1:.1:10; %spatial vector
k = zeros(numel(x),numel(t))
k = zeros(numel(x)/2,1) = initialconds
for i = 1:(numel(t)-1)
for j = 2:(numel(x)-1)
k(j,i+1) = 5*2+c(j+1,i)+param*c(j,1)+param
end
end
paramが一定に保たれていれば、これは問題ありません。私がやりたいのは、paramの乱数のベクトルを用意して、ランダムな時間にparamの乱数を入力することです。ランダム時間はstrtimeによって決定されます。
So for example, if strtime vector = [2 4 9 10], and
param vector = [.21 .01 .25 .05]
First, I want an initial param value at time 0 = .2 (arbitrary). As soon as my
time vector matches with my strtime vector, which in this example is 2, then
my param value is updated to .21. .21 will be used at each time step until my
time vector matches my strtime vector again, which in this case, would be 4. By
time step 4, .01 is used as my param value, and so on.
関数がそのように索引付けされているので、これをどのように取得するかを実際に理解することはできません。関数のインデックスをそのままにして、strtimeベクトルによって決定された新しい値にparamを更新する方法はありますか?
ありがとう、そして私が十分に明確であったことを願っています。