0

forループのシミュレーションとコードを実行しています

例えば

IntervalInterArrivalTime = [2 3 4 5] //user input 
CDF = [250 500 750 1000] // this is the probability but multiply 1000 to alculate the range
randInterArrival = [991 351 754 823] // this is pc random generated number so each time wwill be different 

lengthCDF = length(CDF); // length of the CDF which in this case is =4
period = 0;

私がやりたいforループは、プログラムがrandInterArrivalの範囲をCDFとIntervalArrivalTimeでチェックすることです。例えば:

randInterArrival>0かつ<=CDF(1)の場合、期間はIntervalInterArrivalTime(1)になります。

それ以外の場合、randInterArrival> CDF(1)かつ<= CDF(2)の場合、期間はIntervalInterArrival(2)になります。

それ以外の場合、randInterArrival> CDF(2)かつ<= CDF(3)の場合、期間はIntervalInterArrival(3)になります。

それ以外の場合、randInterArrival> CDF(3)かつ<= CDF(4)の場合、期間はIntervalInterArrival(4)になります。

for i=1:lengthCDF
if randInterArrival(i)>0 && randInterArrival(i)< CDF(i)
 period=IntervalInterArrivalTime(i)
else if randInterArrival(i)> CDF(i) % how to continued to write the statement out so that i can loop through all the items in the CDF and check which IntervalInterArrival() it is

% i stop here and dunno how to continued to loop through the CDF and check
end
end

あなたがすべて助けることができることを願っています。前もって感謝します

4

2 に答える 2

4

各条件を個別にチェックすることで、提案している方法でこれを行うことができます。ただし、チェックする要素/条件の数を増やすと、これは厄介に不格好になります。より良い方法は、find関数を利用して、実行しようとしていることのロジックを再考することです。

目標は何ですか?CDF目標は、よりも大きい最小値のインデックスを決定することですrandInterArrival(i)。これを次のように行います。

index = find(CDF > randInterArrival(i), 1, 'first');

出来上がり!ifステートメントは必要ありません。このインデックスを使用して、期間を取得します。

period = IntervalInterArrivalTime(index);
于 2013-01-20T02:32:33.420 に答える
0

endあなたはあなたの声明をする必要があります:

for i=1:lengthCDF
if randInterArrival(i)>0 && randInterArrival(i)< CDF(i)
 period=IntervalInterArrivalTime(i)
else if randInterArrival(i)> CDF(i) && ?? // i hang here .. 
end
end
于 2013-01-20T01:35:34.867 に答える