All Possible Matrix Permutations
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Shawn Cooper
am 18 Jun. 2020
Kommentiert: Akira Agata
am 19 Jun. 2020
I am trying to write a program that takes integers (or any value, really) and square matrix size m as inputs and returns all possible mxm matrices with those inputs as matrix entries. It would look something like this example input:
allMatrices([0 1],2)
Which would return all 2x2 matrices with 0 and 1 as matrix entries ([0 0; 0 0], [0 0; 0 1], [0 0; 1 1], etc). I would also like to store the matrices so that they can be called individually (M_1, M_2, and so on).
My current strategy is to use
A = unique(nchoosek(repmat('10', 1,4), 4), 'rows')
This lets me index the values A(1:4) as characters for the first 4 entries in a 2x2 matrix, at which point I can use a for-loop to index the remaining entries.
I need to know how to go from my 4 character array ('0000') to a 2x2 matrix ([0 0;0 0]).
And, as always, if there is a more elegant way to do this, please let me know.
Thanks!
0 Kommentare
Akzeptierte Antwort
Ameer Hamza
am 18 Jun. 2020
Bearbeitet: Ameer Hamza
am 18 Jun. 2020
Starting with char array '10' to create such matrices does not seems to be a good strategy. It is possible, but better to use numeric datatypes from the beginning.
The following code creates a 3D matrix with all possible permutation along the 3rd dimension.
N = 2;
n2 = N^2;
x = repmat({[0, 1]}, 1, n2);
M = reshape(combvec(x{:}), 2, 2, []);
Result
>> M(:,:,1)
ans =
0 0
0 0
>> M(:,:,2)
ans =
1 0
0 0
>> M(:,:,5)
ans =
0 1
0 0
>> M(:,:,end)
ans =
1 1
1 1
It shows a few permutations of the matrix.
3 Kommentare
Akira Agata
am 19 Jun. 2020
+1
If you don't have Deep Learning Toolbox, one possible workaround will be like this:
[p,q,r,s] = ndgrid([0 1]);
C = mat2cell([p(:),q(:),r(:),s(:)],ones(numel(p),1));
M = cellfun(@(x) reshape(x,[2 2]),C,'UniformOutput',false);
Result is:
>> M{1}
ans =
0 0
0 0
>> M{2}
ans =
1 0
0 0
...
>> M{end}
ans =
1 1
1 1
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!