Re: [討論] 關於重抽的語法

看板MATLAB作者 (Tremendo!)時間13年前 (2012/11/09 02:33), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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)

11/12 23:36, , 1F
恩謝謝大大的講解,所以resample語法不能寫迴圈囉?
11/12 23:36, 1F

11/13 01:50, , 2F
問題不是出在resample 而是出在矩陣大小
11/13 01:50, 2F

11/13 01:51, , 3F
照你的寫法的話 每次重抽必須要抽相同數目
11/13 01:51, 3F

11/13 22:41, , 4F
那如果我想做一個迴圈在第一次時抽3個第二次抽五個
11/13 22:41, 4F

11/13 22:41, , 5F
能做到嗎?
11/13 22:41, 5F

11/14 02:16, , 6F
你可以用cell存 可以達到你要的效果
11/14 02:16, 6F

11/15 11:00, , 7F
每次寫入前先重新宣告為5*5零矩陣,寫入時不可用a(:,:)寫入
11/15 11:00, 7F

11/15 11:01, , 8F
要使用a(1:length(b(:,1)),1:length(b(1,:)))=b
11/15 11:01, 8F
文章代碼(AID): #1Gc_hd3R (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Gc_hd3R (MATLAB)