приведенный ниже скрипт выполняет случайное перемешивание в 3-м измерении,
% creating a sample data, can be complex numbers
x=magic(10);
x=reshape(x,[4,5,5]);
% split 3D matrix into 2D cell arrays of vectors, permute those, and get back to 3D
y=num2cell(x,3);
newy=cellfun(@(x) x(randperm(length(x))), y,'uni',false);
newx=cell2mat(newy);
вы можете вызвать permute
, а затем num2cell
, чтобы разделить ваш 3D-массив различными способами, чтобы перемешать его в другом измерении Например,
x=permute(x,[2,3,1]);
y=num2cell(x,3);
приведенный выше код создаст массивы ячеек 5x5 векторов из 4 элементов (т. е. 1-го измерения), затем вы можете использовать cellfun/cell2mat
, чтобы выполнить случайное перемешивание 1-го измерения , затем снова вызовите permute
, чтобы изменить его на исходный порядок размеров.