MATLAB 板


LINE

您好,經過這兩天的嘗試,目前大概寫出一個大迴圈,但還有一些小疑問 ※ 引述《sunev (Veritas)》之銘言: : ※ 引述《runkong (米塔克)》之銘言: : : 小弟是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)) ; : 以上三個B可疊在一起寫成 : B=[1 randsample(ww_x,(z_nub(n)-1)) : 1 randsample(ww_x,(z_nub(n)-1)) : 1 randsample(ww_x,(z_nub(n)-1))]; : 可寫成迴圈形式 : for i=1:3 : B(i,:)=[1 randsample(ww_x,(z_nub(n)-1))]; : end 當初B的構想是評審於評分時,讓第一位參賽者成為第一名,其餘隨機分配。 現在有另一種B構想, 是除了讓第一位參賽者成為第一名,還要讓第二名成為最後一名,其餘隨機分配。 其原本輸入的input如下所示: B_1(1) = 1 ; B_1(2)=z_nub(n); B_1(3:z_nub(n)) = randsample (www_x,(z_nub(n)-2)) ; if z_nub(n) == 3; B_1(3)=2; end B_2(1) = 1 ; B_2(2)=z_nub(n); B_2(3:z_nub(n)) = randsample (www_x,(z_nub(n)-2)) ; if z_nub(n) == 3; B_2(3)=2; end B_3(1) = 1 ; B_3(2)=z_nub(n); B_3(3:z_nub(n)) = randsample (www_x,(z_nub(n)-2)) ; if z_nub(n) == 3; B_3(3)=2; end 依照您的改法我將他改成 www_x=2:z_nub-1; %z_nub為本次的參賽者人數 fori=1:3; B(i;:)= [1 z_nub randsample(www_x,(z_nub-2))]; if z_nub==3; B(3)=2; end end 不知道這樣是否正確呢? : : 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; : 你A4有必要留下來嗎? : 如果不用留可以寫成 : t=randsample(first_place,1); : A_4([1 t])=A_4([t 1]); 當初會將A4.A5等代號特別留下來 是因為希望每一次的迴圈當中, 每位評審都重取一個值做為他評分鐘的第一名, 不要同一次迴圈當中的每位評審選出來的第一名都是相同的。 不知道您這種寫法是共用同一個值還會各別重取呢? : : 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; : for i=1:2 : A(i,:)=[1 randsample(ww_x,(z_nub(n)-1))]; : t=randsample(first_place,1); : A(i,[1 t])=A(i,[t 1]); : end : : 第一個問題是每個評審分別都會對不同參賽者排序 : : 假設來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個陣列, : : 想用迴圈但卡住寫不出來,有人推薦我可能可以用二維陣列去寫? : : 不知有沒有什麼語法可以推薦呢? : 所以你要的大概是這樣? : for i=1:17 : for j=0:i : clear A,B : for k=1:i-j : B(k,:)=[1 randsample(ww_x,(z_nub(n)-1))]; : end : for k=1:j : A(k,:)=[1 randsample(ww_x,(z_nub(n)-1))]; : t=randsample(first_place,1); : A(i,[1 t])=A(i,[t 1]); : end : %% 做你想做的事 : end : end 原本的程式碼只能就單一組合去演算,所以我才希望能夠寫迴圈, 讓我的程式能夠得到A和B之間各個組合狀況下的東西,不用一個一個組合去演算, 因此原本的程式碼才沒有eval。 就您的回答雖然會去跑各組合狀況,但似乎不會把演算的內容留下讓我演算機率P, 因此我才去查到說有eval這條指令可以去給他編號在將其留下讓我能演算機率P。 以矩陣的方法有想過,但目前不知道該從何下手。 最後附上目前這個大迴圈的code ---------------------------------- nnn =10000 ; people = 17; for i=2:people for B=0:i A = i - B; for n=1:nnn; % 運算模型 ww_x =2:z_nub ; www_x =2:z_nub-1 ; eval(['A',num2str(A),'B',num2str(B),'_sum = zeros(1,z_nub);']); for j = 1:A tmp = [1 randsample(ww_x,(z_nub-1))]; t=randsample(first_place,1); tmp(1) = tmp(t); tmp(t) = 1; eval(['AB_',num2str(j),' = tmp(1,:)']); eval(['A',num2str(A),'B',num2str(B),'_sum =','A',num2str(A),'B',num2str(B),'_sum + AB_',num2str(j)]); end for j = 1:B tmp = [1 z_nub randsample(www_x,(z_nub-2))]; if z_nub == 3; tmp(3)=2; end eval(['AB_',num2str(j+A),' = tmp(1,:)']); eval(['A',num2str(A),'B',num2str(B),'_sum =','A',num2str(A),'B',num2str(B),'_sum + AB_',num2str(j+A)]); end end end end --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.76.217
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1495646963.A.891.html ※ 編輯: runkong (115.43.76.217), 05/25/2017 01:30:47 ※ 編輯: runkong (115.43.76.217), 05/25/2017 01:31:14







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP