首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB中如何在矩阵的每一列中随机选取一个元素?

在MATLAB中如何在矩阵的每一列中随机选取一个元素?
EN

Stack Overflow用户
提问于 2013-09-10 13:15:16
回答 3查看 2.6K关注 0票数 2

问题标题解释了我想要什么。例如,如果特定列中有6个元素,我如何从该列中随机选取1个元素。如果可能,请保持简单。

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2013-09-10 13:20:46

假设您有一个大小为m-by-n的矩阵A。您希望从每个n列中随机选取一个元素:

代码语言:javascript
复制
>> rows = randsample( m, n ); % sample n times from integers 1:m

现在rows有了n值,每个值代表相应列中的一个随机条目。

访问这些值

代码语言:javascript
复制
>> sampledValues = A( sub2ind( size(A), rows, 1:n ) ); 

有关更多信息,请参阅有关randsamplesub2ind的文档。

票数 4
EN

Stack Overflow用户

发布于 2013-09-10 14:02:18

如果您的MATLAB版本是> R2008a,则可以使用randi

代码语言:javascript
复制
samples = A(sparse(randi(size(A,1),size(A,2),1), 1:size(A,2), true));

或,

代码语言:javascript
复制
[m, n] = size(A);
samples = A(sparse(randi(m,n,1), 1:n, true));

但是,对于较旧的版本,您可以用randsample替换randi,但这需要统计工具箱。或者介绍:

代码语言:javascript
复制
randi = @(imax, m, n) floor(1+rand(m,n)*imax);
票数 3
EN

Stack Overflow用户

发布于 2013-09-10 21:09:43

这里有一个简单的方法。请注意,没有循环的版本应该更有效率。

假设您的变量是遍历其n列的x循环:

代码语言:javascript
复制
selected = zeros(1,n);
for c = 1:n
    selected(c) =  x(randperm(6,1),n);
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18711171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档