Azzera filtri
Azzera filtri

How do I create a function that takes a vector of arbitrary length as an input argument and randomly permutes it as an output argument using the identity matrix, without using the randperm command?

3 visualizzazioni (ultimi 30 giorni)
function [ x ] = myPerm(A)
A = ()
myLength = length(A)
I = eye(length(A))
end
this is what I have, I need help creating the arbitrary length and permuting the matrix
  4 Commenti
Walter Roberson
Walter Roberson il 11 Dic 2018
you have not put in any version information and full code generation is currently supported for randperm .
If permutation of aa vector is needed then why bother with an identity matrix ?
Sorry but this is sounding like a homework assignment not a real task.

Accedi per commentare.

Risposte (2)

Stephen23
Stephen23 il 11 Dic 2018
Modificato: Stephen23 il 11 Dic 2018
For an array of any size:
>> M = reshape(1:12,3,4)
M =
1 4 7 10
2 5 8 11
3 6 9 12
>> [~,X] = sort(rand(1,numel(M)));
>> M(:) = M(X)
M =
8 9 2 7
5 4 11 1
3 6 12 10

Bruno Luong
Bruno Luong il 11 Dic 2018
Fisher–Yates shuffle
for i = length(A):-1:2
j = ceil(i*rand);
A([i,j]) = A([j i]);
end

Categorie

Scopri di più su Structures in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by