看板 MATLAB 關於我們 聯絡資訊
※ 引述《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