matlab中矩阵向量的置换

matlab中矩阵向量的置换,matlab,matrix,permutation,Matlab,Matrix,Permutation,我有一个文件中的静态矩阵: size(data)=[80 5] 我想要的是随机改变每个向量的位置 当我使用烫发时,比如: N = size(data, 1); X = perms(1:N); % # Permutations of column indices Y = meshgrid(1:N, 1:factorial(N)); % # Row indices idx = (X - 1) * N + Y;

我有一个文件中的静态矩阵:

    size(data)=[80 5]
我想要的是随机改变每个向量的位置 当我使用烫发时,比如:

    N = size(data, 1);
    X = perms(1:N);                    % # Permutations of column indices
    Y = meshgrid(1:N, 1:factorial(N)); % # Row indices
    idx = (X - 1) * N + Y;             % # Convert to linear indexing
    C = data(idx) 
但这给了我一个错误:程序允许的最大变量大小是 超过。 有没有其他功能可以满足我的需要?

烫发不适合大数字,即任何大于10的数字

参考

上面说

当长度V小于约10时,permsv是可行的

请参见以下代码中的大小:

MB(10,1) = 0;
for N = 1:10
    X = perms(1:N);
    dt=whos('X');
    MB(N)=dt.bytes*9.53674e-7;
end

plot(1:10,MB,'r*-');
请注意,曲线的陡度突然上升,超过9

所以我想我完了

 N = size(data, 1);
 r=randperm(N);
 for ii=1:80
   matrix(r(ii),:) =data(ii,:)  ;     
 end

@比纳尔,你需要所有的吗?如果你提到更多的细节,这里有人可能会提出一个替代方案。它的袖珍算法,我需要每个向量来学习感知器。我找到了答案:N=sizedata,1;r=randpermN;对于ii=1:80矩阵RII,:=dataii,:;end@binar很高兴你找到了答案。请将其作为答案发布并接受。这意味着告诉系统您不再需要此问题的帮助: