Permutations of an array by fixing some element

Hello,
I need to permute the elements of an array but some specific elements have to be fixed. For example, consider the following array.
array = [1 0 3 0 5 0]
All the 0's in this array must be fixed. Other elements can change their positions, For this example, the following are all the possible results.
1 0 3 0 5 0
1 0 5 0 3 0
3 0 1 0 5 0
3 0 5 0 1 0
5 0 1 0 3 0
5 0 3 0 1 0
Also, I need a general algorithm that works for any given 1xn array, and I need all the possible results.
Thanks for your efforts.

 Réponse acceptée

Bruno Luong
Bruno Luong le 21 Août 2020
array=[1 0 3 0 5 0]
b = array~=0;
A = zeros(factorial(sum(b)),length(array));
A(:,b) = perms(array(b))

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by