getrnd.m

来自「原创:随机抽样。从一系列的总体中抽取出指定数量的不重复样本点。」· M 代码 · 共 30 行

M
30
字号
%作者: Humg. 2008.11.12
%说明:使用迭代的方法从总体中抽取不重复的样本

function V = getrnd(n, M)
%从矩阵M中随机抽取出不重复的n个元素
%返回1×n的行向量V

if ~isscalar(n)
    error('n 应该是一个标量!');
end

[nrow, ncol] = size(M);
nLength = nrow * ncol;
if n > nLength
   error('n 应该小于 M的总长度!'); 
elseif n == nLength
    V = M;
    return;
end

NIndex = unique(unidrnd(nLength, 1, n));
V = M(NIndex);
psize = size(V, 1) * size(V, 2);
V = reshape(V, 1, psize);
if psize < n
    M(NIndex) = [];
    tmpV = getrnd(n - psize, M);
    V = [V, tmpV];
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?