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/cn.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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP