2016-03-16 2 views
1

Итак, проблема проста в понимании. Учитывая любую символическую матрицу любого dimmension, я хочу поменять элементы, чтобы получить одну матрицу того же размера, одни и те же элементы, но распределенные по-разному.подкачки элементов заданных символических матриц

Например

syms a b c 

A=[a b c;0 0 c] 

переброса А мы можем получить:

A=[b a c;0 c 0]; 
+1

Есть ли разница между '[a b; 0 0]' и '[b a; 0 0]' для вашего приложения? Возможно, этого уже достаточно: 'sz = [4,4]; sym ('a', sz). * Randi ([0,1], sz);'? – Daniel

+0

@ Даниэль, я понял, что эта проблема сводится к случайной случайной замене элементов данной матрицы, я собираюсь отредактировать сообщение, даже название. – gustavoreche

+0

Итак, у вас есть матрица ввода 'A', и вы хотите случайным образом переставить элементы? Тогда вы можете определенно упростить свой вопрос, в этом случае не имеет значения, какие элементы разрешены или нет, матрица уже существует. – Daniel

ответ

0

Использование randperm(numel(A)) вы можете сгенерировать случайную перестановку чисел 1: numel (A), которые являются индексы в вашей матрица.

A(:)=A(randperm(numel(A))); 

The A(:) на левой стороне требуется, чтобы сохранить форму, в противном случае вы в конечном итоге с вектором элементов. Если вы хотите сохранить свою матрицу A без изменений:

B=A; %just to get a matrix of same size and datatype 
B(:)=A(randperm(numel(A)));