matlab中矩阵中向量的排列
permutations of vectors in matrix in matlab
我有一个来自文件的静态矩阵:
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)
但是它给我一个错误:Maximum variable size allowed by the program is
exceeded.
还有其他功能可以满足我的需求吗?
perms
不适合大数字,即任何 >10
的数字
它说
perms(v) is practical when length(v) is less than about 10.
从以下代码中查看它占用的大小:
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
我有一个来自文件的静态矩阵:
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)
但是它给我一个错误:Maximum variable size allowed by the program is
exceeded.
还有其他功能可以满足我的需求吗?
perms
不适合大数字,即任何 >10
它说
perms(v) is practical when length(v) is less than about 10.
从以下代码中查看它占用的大小:
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