作者diva (Tremendo!)
看板MATLAB
標題Re: [討論] 關於重抽的語法
時間Fri Nov 9 02:33:08 2012
※ 引述《jajagood (藍海白沙)》之銘言:
: 小弟在座randsample語法時遇到一個問題
: EX A=[2 4 6 8];
: for i=1:3;
: R(i,:)=randsample(A,3,true);
: end
: 基本上會跑出3*3的重抽矩陣。
: 當我想改變3的位置時
: EX A=[2 4 6 8];
: n=[3 5];
: for j=1:length(n);
: ni=n(j);
: for i=1:3;
: R(i,:)=randsample(A,ni,true);
: end
: 照理來說應該會先跑一次抽3個的重抽,再跑一次抽5個的重抽,各3遍。
: 但假如n矩陣的位置只有一個,此方法是OK的。
: 但n矩陣超過2個(包含2個),卻出現ERROR。
: Subscripted assignment dimension mismatch.
: 想請問是甚麼問題?還有怎麼解決?
: 先謝謝各位大大。
j=1時
你產生了一個1x3的矩陣
分別丟了3次到一個未知大小的R裡面
所以R的大小變成3x3
j=2時
你產生了1x5的矩陣
要丟一個已知大小的R裡面
因為你可以丟進去的空間是1x3
你要丟1x5進去
所以會產生錯誤
簡單小example
xx=[1 2 3; 4 5 6]
xx(1,:)=[1:5]
就會產生和你一樣的錯誤了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.103.220
※ 編輯: diva 來自: 140.112.103.220 (11/09 02:34)
推 jajagood:恩謝謝大大的講解,所以resample語法不能寫迴圈囉? 11/12 23:36
→ diva:問題不是出在resample 而是出在矩陣大小 11/13 01:50
→ diva:照你的寫法的話 每次重抽必須要抽相同數目 11/13 01:51
推 jajagood:那如果我想做一個迴圈在第一次時抽3個第二次抽五個 11/13 22:41
→ jajagood:能做到嗎? 11/13 22:41
→ diva:你可以用cell存 可以達到你要的效果 11/14 02:16
→ rannin:每次寫入前先重新宣告為5*5零矩陣,寫入時不可用a(:,:)寫入 11/15 11:00
→ rannin:要使用a(1:length(b(:,1)),1:length(b(1,:)))=b 11/15 11:01