作者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)
1F:推 jajagood:恩谢谢大大的讲解,所以resample语法不能写回圈罗? 11/12 23:36
2F:→ diva:问题不是出在resample 而是出在矩阵大小 11/13 01:50
3F:→ diva:照你的写法的话 每次重抽必须要抽相同数目 11/13 01:51
4F:推 jajagood:那如果我想做一个回圈在第一次时抽3个第二次抽五个 11/13 22:41
5F:→ jajagood:能做到吗? 11/13 22:41
6F:→ diva:你可以用cell存 可以达到你要的效果 11/14 02:16
7F:→ rannin:每次写入前先重新宣告为5*5零矩阵,写入时不可用a(:,:)写入 11/15 11:00
8F:→ rannin:要使用a(1:length(b(:,1)),1:length(b(1,:)))=b 11/15 11:01