问题标题解释了我想要什么。例如,如果特定列中有6个元素,我如何从该列中随机选取1个元素。如果可能,请保持简单。
谢谢你的帮助。
发布于 2013-09-10 13:20:46
假设您有一个大小为m-by-n的矩阵A。您希望从每个n列中随机选取一个元素:
>> rows = randsample( m, n ); % sample n times from integers 1:m现在rows有了n值,每个值代表相应列中的一个随机条目。
访问这些值
>> sampledValues = A( sub2ind( size(A), rows, 1:n ) ); 有关更多信息,请参阅有关randsample和sub2ind的文档。
发布于 2013-09-10 14:02:18
如果您的MATLAB版本是> R2008a,则可以使用randi。
samples = A(sparse(randi(size(A,1),size(A,2),1), 1:size(A,2), true));或,
[m, n] = size(A);
samples = A(sparse(randi(m,n,1), 1:n, true));但是,对于较旧的版本,您可以用randsample替换randi,但这需要统计工具箱。或者介绍:
randi = @(imax, m, n) floor(1+rand(m,n)*imax);发布于 2013-09-10 21:09:43
这里有一个简单的方法。请注意,没有循环的版本应该更有效率。
假设您的变量是遍历其n列的x循环:
selected = zeros(1,n);
for c = 1:n
selected(c) = x(randperm(6,1),n);
endhttps://stackoverflow.com/questions/18711171
复制相似问题