2013-01-20 47 views
0

我做了一個仿真和代碼迴路MATLAB進行循環掛

例如

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 

希望大家都能幫忙。在此先感謝

+0

首先,您的if語句很時髦。看到這裏http://www.mathworks.com/help/matlab/ref/if.html。你或者需要使用elseif或者其他的結束。你也需要結束你的for循環。並且如果你不想讓你的代碼掛起,拿走這個套索。 – thang

+0

我知道我沒有結束文件,因爲for循環尚未完成。並且我嘗試了一些方法來執行for循環,但仍然失敗。可以給出一個類似的例子,以便我可以讓for循環循環並檢查CDF?在此先感謝 – Eric

+0

爲什麼不張貼實際的代碼,因爲「else if randInterArrival(i)> CDF(i)&& ?? //我掛在這裏..」看起來不像合法的matlab代碼。如果您發佈原始代碼,我認爲人們可以更好地幫助您。 – thang

回答

4

可以做到這一點你建議的方式,通過分別檢查各個條件。然而,當你增加要檢查的元素/條件的數量時,這會變得非常笨重。更好的方法是利用find函數和重新思考你想要做什麼的邏輯:

目標是什麼?目標是確定大於randInterArrival(i)的最小CDF值的索引。這樣做如下:

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

瞧!否需要if陳述。使用此索引獲取期間:

period = IntervalInterArrivalTime(index); 
+0

感謝@tmpearce使用這種方法我不需要使用if語句,這是非常混亂。非常感謝.. :) – Eric

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 
+0

我知道我需要結束聲明..但for循環還沒有完成運行,我不知道如何繼續for循環。你知道該怎麼做? – Eric

+0

你在命令行中輸入了這段代碼嗎?如果是這樣,爲什麼不把它寫入一個.m文件。 – thang

+0

我正在將它寫入.m文件。我不知道的是for循環。如何循環它,以便我可以檢查CDF中的所有變量 – Eric