在MATLAB中从另一个矩阵的行创建矩阵

时间:2016-02-19 22:02:44

标签: matlab matrix

我有一个x-by-y矩阵M,我用来存储x行向量。

e.g。

M = [ 1 2 3; 4 5 6; 7 8 9 ]

现在说我要创建另一个矩阵N,其中包含以随机顺序排列的这些向量,某些向量可能重复,有些可能根本不会被使用。

N = [ 4 5 6; 4 5 6; 1 2 3; 7 8 9; 4 5 6; ...]

有什么建议吗?

我正在考虑以下事项:

V = randi([x, 1], 1, length);
N = [ ];
for b = 1:length;
    c = V(b);
    N = [N; M(c)];
end

同样,x是矩阵M中的行数。我无法测试这个,所以我不知道它是否有效。

1 个答案:

答案 0 :(得分:1)

您未正确使用randi(请阅读documentation)。看起来你有向后输入参数。您也可以在没有循环的情况下执行此操作:

M = [1 2 3; 4 5 6; 7 8 9];
len = 10;                     % Number of rows in new matrix
V = randi(size(M,1), len, 1); % Random row indices
N = M(V,:)

返回(随机)

N =

     7     8     9
     7     8     9
     1     2     3
     7     8     9
     4     5     6
     1     2     3
     1     2     3
     4     5     6
     7     8     9
     7     8     9

我还使用len代替length,这是常用函数的名称。