2015-05-09 22 views
0

我想通過MATLAB創建一個程序。使用MATLAB進行考試計劃編制

由於所有的考試項目我們都有三樣東西;考試的開始時間,節目的當天以及哪天考試將在當天和每小時開始。我們用一個有三個變量的數組來展示它。

hour = [1 2 3]; 

時間顯示爲代碼,例如,'1'表示考試開始一小時可以是早上8點到上午10點。 '2'也許10到12和3可能是15到17.
和我們天陣。它涉及考試計劃的保留範圍。我選擇了14天。

day = [1...14]; 

另一個領域是課程代碼,這些都是提到的課程代碼。例如碼「1」是「數學」和...

Course = [1 … 42]; 

我想日子和時辰,當然還有一個可能的組合,這樣,當一個課程,在一天時間選擇,它不重複在同一天和小時。此外,後一門課程或一天,填補了,不要再隨意使用它們,傳播課程是這樣的:

Hour  1 2 3 1 2 3 1 2 3 1 2 3 ... 1 2 3 
Day   1 1 1 2 2 2 3 3 3 4 4 4 ... 14 14 14 
Course  11 33 12 42 10 1 2 3 9 19 7 40 ... 17 8 3 
+1

只是爲了澄清:還有比每個小時/天,其他沒有任何限制的獨特之處?這只是一個小時/天的標識符和課程標識符之間的隨機鏈接的問題?這可能是Matlab中的單線程,使用2或3個內置函數。有沒有可能解釋你卡在哪裏? –

+2

使用['randperm(course)'](http://mathworks.com/help/matlab/ref/randperm.html)怎麼樣?那應該解決問題,或者我錯過了什麼? – hbaderts

+0

@NeilSlater:嗨,我認爲這已經足夠清楚的朋友。我只想要最後陣容而不會重複和意外。課程是隨機的,每天和每小時都和我說的一樣。 – sajad

回答

2

檢查下面的代碼(感謝@hbaderts建議)。

schedule(3,:) = randperm(12); % randomize 12 courses 
schedule(1,:) = repelem([1 2 3 4],3); % repeat 4 days 
schedule(2,:) = repmat([1 2 3],1,4); % repeat time slots in each day 

輸出:

1  1  1  2  2  2  3  3  3  4  4  4 
1  2  3  1  2  3  1  2  3  1  2  3 
5  2  6  4  9  8 12 11  7  1 10  3 
+0

感謝朋友thankssssss。我有一個問題要執行,未定義函數'repelem'輸入參數的類型'雙'。我的matlab是2012版。我會更新我的matlab到2015年使用repelem。我有另一個問題。你知道一個標準的計劃,我們必須在一天和一個小時內開始一次以上的考試。例如,我們可以在第1天開始課程1,在第1小時開始,也可以在同一天的第1天和第1小時開始另一個考試,如課程「2」。你能解決這個問題嗎?非常感謝我的好朋友:) – sajad

+0

@sajadkhammar,因爲許多其他人在之前的評論中建議你,現在請根據這些給定的輸入嘗試。我們都在這裏與我們的其他時間表在一起。最好的感謝你可以給我們的是試着問你的問題/錯誤:-)。 –