[請益]選取會增質的變數作成陣列與迴圈問題

作者: runkong (米塔克)   2017-05-21 22:26:47
小弟是matlab新手,
這幾天遇到了兩個迴圈和變數的問題實在搜不到類似的討論,
因此想請教板上的各位大大。
這是一個模擬評選的模型
會有3~8個隨機數量的參賽者
總評審數量是由2~17位隨機出現,A就是他們的評分模式
其中會有總評審人數會有0~總評審人數的特殊評審,B就是他們的評分模式
原本的input是如下所示
B_1(1) = 1 ;
B_1(2:z_nub(n)) = randsample (ww_x,(z_nub(n)-1)) ;
B_2(1) = 1 ;
B_2(2:z_nub(n)) = randsample (ww_x,(z_nub(n)-1)) ;
B_3(1) = 1 ;
B_3(2:z_nub(n)) = randsample (ww_x,(z_nub(n)-1)) ;
A_4(1) = 1 ;
A_4(2:z_nub(n)) = randsample (ww_x,(z_nub(n)-1)) ;
A4(n)=randsample(first_place,1);
A_4(1)=A_4(A4(n)); A_4(A4(n)) = 1;
A_5(1) = 1 ;
A_5(2:z_nub(n)) = randsample (ww_x,(z_nub(n)-1)) ;
A5(n)=randsample(first_place,1);
A_5(1)=A_5(A5(n)); A_5(A5(n)) = 1;
第一個問題是每個評審分別都會對不同參賽者排序
假設來5位參賽者那就是評審會隨機評1~5名
可能會有以下情況
B_1得到[1,2,5,3,4]
B_2得到[1,5,4,3,2]
B_3得到[1,4,5,3,2]
A_4得到[3,4,5,1,2]
A_5得到[4,3,2,5,1]
我希望他能夠自行將 總評審數量由1跑到17,
並搭配特殊評審由0跑到該次的總評審數量做組合搭配
當B=3 A=5時,他能跑出上面那5個陣列,
想用迴圈但卡住寫不出來,有人推薦我可能可以用二維陣列去寫?
不知有沒有什麼語法可以推薦呢?
第二個問題是
每個評審分別都會對不同參賽者排序
假設來5位參賽者那就是評審會評1~5名
可能就會有以下情況
B_1得到[1,2,5,3,4]
B_2得到[1,5,4,3,2]
B_3得到[1,4,5,3,2]
A_4得到[3,4,5,1,2]
A_5得到[4,3,2,5,1]
最後每個人的排序加起來最低的就是勝者
會得到C=[1,2,5,3,4
1,5,4,3,2
1,4,5,3,2
3,4,5,1,2
4,3,2,5,1]
我會自己另外把他變成
D=[10,18,21,15,11]
第二個問題就在"A和B這兩個不固定數量與長度的陣列疊加成一個矩陣"
也就是C這個步驟我辦不到只能土法煉鋼每個狀態去更改,
剛剛查到似乎可以使用append去串接,
不過因為第一個問題所以沒辦法嘗試
且每次名稱都會由A1.A2.A3做變化因此無法使用A=1:17;
我有看到可以用eval依照他們增質的數量去定義,
不過自己嘗試寫了一下還是跑不出來.
目前也算是只用土法煉鋼的方法在更改
麻煩各位幫忙了 兩個問題解答一個的750P 以表感謝
作者: sunev (Veritas)   2017-05-21 23:53:00
程序增質?我看不出你舉例中的A1A2有何差別所以你的A是變數不是程序對吧,把數個A疊成矩陣不行嗎?程序是丟東西吐東西,變數是存東西,你的A看起來就是變數這樣問好了A=[A1;A2] 成立嗎?不太懂,程序不可能在等號左邊,因為只有變數才能賦值我也不太懂你大小寫的差異為何陣列也是變數,可用來存東西的東西都叫變數如果你覺得A2也是陣列,那A2和a2到底有何不同?
作者: YoursEver (豬是妳)   2017-05-22 23:50:00
建議: 重新編輯文章,把你每一步,每一次疊代所需要的input和輸出的output全部列下來,否則很難看得懂你想說什麼.

Links booklink

Contact Us: admin [ a t ] ucptt.com