如何在 MATLAB 矩阵中随机打乱行?
在本文中,我们将讨论可以使用size()和randperm()函数完成的“矩阵中行的随机洗牌”。
使用的功能
1)size(): size()函数用于返回指定数组“X”各维度的大小或指定矩阵“X”的大小。
句法:
size(X)
[m,n] = size(X)
size(X,dim)
[d1,d2,d3,...,dn] = size(X)
这里,
size(X)返回具有 ndims(X) 元素的向量 d 中指定数组“X”的每个维度的大小。
[m,n] = size(X)在单独的变量 m 和 n 中返回指定矩阵“X”的大小。
size(X,dim)返回由标量 dim 指定的“X”维度的大小。
[d1,d2,d3,...,dn] = size(X)返回单独变量中指定数组“X”的前 n 个维度的大小。
参数:此函数接受两个参数,如下所示:
- X:它是指定的数组或矩阵或维度。
- dim:它是指定维度“X”的标量值
2)randperm(): randperm()函数用于整数的随机排列。
句法:
randperm(n)
randperm(n,k)
这里,
randperm(n)返回一个行向量,其中包含从“1”到“n”的整数的随机排列,没有任何重复。
randperm(n,k)返回一个行向量,其中包含从 1 到 n 随机选择的“k”个唯一整数。
参数:此函数接受两个参数,如下所示:
- n:这是指定的数字,从“1”生成一个随机数,没有任何重复。
- k:它是从 1 到 n 中随机选择的唯一整数的数量。
下面的例子是“矩阵中列的随机改组”,可以使用size()和randperm()函数的组合来完成:
示例 1
Matlab
% MATLAB code for random shuffling
% of columns in a Matrix
A = [1 2 3 % Specifying a 3*3 matrix
4 5 6
7 8 9];
% Calling the size() function over
% the above matrix which gives a row vector
% whose elements are the lengths of the
% corresponding dimensions of A
rows = size(A);
% Calling the randperm() function for the
% random permutation of the above matrix
% over its dimension of 3*3
P = randperm(rows);
% Getting the row wise randomly shuffled matrix
B = A(P, : )
Matlab
% MATLAB code for random shuffling
% of columns in a Matrix
A = [1 2 3 4 % Specifying a 4*4 matrix
5 6 7 8
9 10 11 12
13 14 15 16];
% Calling the randperm() function to
% randomly shuffle the rows of matrix A
A(randperm(size(A, 2)), : )
输出
B =
1 2 3
7 8 9
4 5 6
示例 2
MATLAB
% MATLAB code for random shuffling
% of columns in a Matrix
A = [1 2 3 4 % Specifying a 4*4 matrix
5 6 7 8
9 10 11 12
13 14 15 16];
% Calling the randperm() function to
% randomly shuffle the rows of matrix A
A(randperm(size(A, 2)), : )
输出
ans =
9 10 11 12
1 2 3 4
5 6 7 8
13 14 15 16