游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7159|回复: 2

[讨论] matlab里randsample函数的一个怪现象..

[复制链接]

15

主题

207

帖子

283

积分

中级会员

Rank: 3Rank: 3

积分
283
发表于 2010-1-13 18:54:00 | 显示全部楼层 |阅读模式
我最近写了一个加权无放回抽样的matlab m文件:randsample_wor1(m,n),表示n次抽样,每次都是无放回加权抽取m个元素;权重配置表在excel表格里

之所以写这个m文件是因为,matlab里的randsample随机抽样函数,只支持加权有放回抽样,不支持加权无放回抽样;也就是只能使用randsample(s,n,true,w),而不可以使用randsample(s,n,false,w)

我写完后,发现一个怪事,键入randsample_wor1(3,4),程序正确运行了,键入randsample_wor1(3,10),就出现了出错提示
??? Error using ==> histc
Edge vector must be monotonically non-decreasing.

Error in ==> randsample at 101
                [~, y] = histc(rand(k,1),edges);

Error in ==> randsample_wor1 at 10
        B(i)=randsample(s,1,true,A2);

发一下我写的randsample_wor1(m,n)文件

function B=randsample_wor1(m,n)
A=xlsread('data_weight.xlsx');
A1=A(:,1);
B=zeros(m,1);
C=zeros(n,m);
s=transpose(1:1:length(A1));
for j=1:n
    A2=A(:,2);
    for i=1:m   
        B(i)=randsample(s,1,true,A2);
        A2(B(i))=0;
    end
    for i=1:m
        C(j,i)=A1(B(i));
    end
end
xlswrite('randsample_wor.xlsx',C);


这种现象很不稳定,这个函数有时候出错,有时候又不出错;世事无常啊

我重新写了个函数randsample_wor(m,n),实现类似的功能,却再也不出现出错提示
function B=randsample_wor(m,n)
A=xlsread('data_weight.xlsx');
A1=A(:,1);
B=zeros(m,1);
C=zeros(n,m);
s=transpose(1:1:length(A1));
ut=0;
loc=0;
for j=1:n
    A2=A(:,2);
    s=transpose(1:1:length(A1));
    for i=1:m   
        B(i)=randsample(s,1,true,A2);
        [ut, loc] = ismember(B(i), s);
        s(loc)=[];
        A2(loc)=[];
    end
    for i=1:m
        C(j,i)=A1(B(i));
    end
end
xlswrite('randsample_wor.xlsx',C);

查了下资料http://www.mathworks.cn/matlabcentral/newsreader/view_thread/255206
(randsample bug? )
里面有个matlab的官方人员的回复,从他的口气里也不能确定问题到底发生在什么地方

热切请教matlab的高手们,能不能指点下迷津

34

主题

425

帖子

479

积分

中级会员

Rank: 3Rank: 3

积分
479
发表于 2010-2-4 20:58:00 | 显示全部楼层

Re:matlab里randsample函数的一个怪现象..

楼主用matlab
我用vbs
无能为力

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-1-22 08:44:00 | 显示全部楼层

Re:matlab里randsample函数的一个怪现象..

同问,求回答!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 08:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表