Matlab 行的随机顺序

发布于 2024-10-26 12:43:43 字数 55 浏览 1 评论 0原文

假设我们有一个大小为 100x3 的矩阵,

您将如何在 MATLAB 中打乱行?

Say we have a matrix of size 100x3

How would you shuffle the rows in MATLAB?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

很酷不放纵 2024-11-02 12:43:43

要打乱矩阵的行,您可以使用 RANDPERM

shuffledArray = orderedArray(randperm(size(orderedArray,1)),:);

randperm将生成 N 个随机值的列表并对它们进行排序,返回 sort 的第二个输出作为结果。

To shuffle the rows of a matrix, you can use RANDPERM

shuffledArray = orderedArray(randperm(size(orderedArray,1)),:);

randperm will generate a list of N random values and sort them, returning the second output of sort as result.

坚持沉默 2024-11-02 12:43:43

这可以通过 Matlab 的 randsample 函数为矩阵行创建一个新的随机索引来完成。

matrix=matrix(randsample(1:length(matrix),length(matrix)),:);

This can be done by creating a new random index for the matrix rows via Matlab's randsample function.

matrix=matrix(randsample(1:length(matrix),length(matrix)),:);
洛阳烟雨空心柳 2024-11-02 12:43:43

在阅读乔纳斯的答案时,我发现它有点难以阅读,难以理解。在Mathworks中,我发现了类似的 问题,答案更具可读性,更容易理解。借鉴 Mathworks 的想法,我编写了一个函数:

function ret = shuffleRow(mat)

[r c] = size(mat);
shuffledRow = randperm(r);
ret = mat(shuffledRow, :);

实际上它与 Jonas 的答案 执行相同的操作。但我认为它更具可读性,更容易理解。

While reading the answer of Jonas I found it little bit tough to read, tough to understand. In Mathworks I found a similar question where the answer is more readable, easier to understand. Taking idea from Mathworks I have written a function:

function ret = shuffleRow(mat)

[r c] = size(mat);
shuffledRow = randperm(r);
ret = mat(shuffledRow, :);

Actually it does the same thing as Jonas' answer. But I think it is little bit more readable, easier to understand.

走野 2024-11-02 12:43:43

对于大型数据集,您可以使用自定义 Shuffle 函数

它使用 DE Knuth 的洗牌算法(也称为 Fisher-Yates)和可爱的 KISS 随机数生成器(G. Marsaglia)。

For large datasets, you can use the custom Shuffle function

It uses D.E. Knuth's shuffle algorithm (also called Fisher-Yates) and the cute KISS random number generator (G. Marsaglia).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文