Вопрос о matlab и рандомизации 3d-матрицы относительно строк и столбцов.
У меня есть матрица тревожных сигналов M, и я хочу немного испортить ее, но с некоторым контролем.
Я могу достичь своего желания с помощью цикла for
for j=1:size(M,3)
r=randperm(size(M,1));
random_M(:,:,j)=M(r,r,j);
end
Есть ли способ выполнить это без необходимости циклически повторять j?Мне нужно много итераций рандомизации, и я могу позволить себе преимущества индексирования.
Приветствия!
edit: Еще несколько мыслей после комментариев Александру
Я создал функцию, которая рандомизирует сжатый файлверсия M:
function randomMat=randomiseMat(Mat)
[rows,cols]=size(Mat);
r=randperm(rows);
randomMat=Mat(r,r);
затем, используя arrayfun, я, кажется, получаю то, что хочу:
randomM=arrayfun(@(x) randomiseMat(M(:,:,x)),1:size(M,3),'UniformOutput', false)
однако randomM теперь представляет собой массив ячеек размером (1, размер (M), 3)) с каждой ячейкой, содержащей рандомизированный массив.
Есть ли способ сделать это в трехмерной матрице так же, как вход M?