フィルターのクリア

How permutate 2-by-2 matrices in a single matrix

1 回表示 (過去 30 日間)
Peiman Khandar
Peiman Khandar 2022 年 10 月 28 日
編集済み: Peiman Khandar 2022 年 10 月 29 日
Hello everyone
I have three matrices as:
a = [1,2;3,4]; b = [2,5;1,6]; c = [3,7;2,4];
and collect them in a single M matrix as, M = [a,b,c]. Now I want to have permutation of these three matrices in M_P matrix as:
M_P = [a b c;
a c b;
b a c;
b c a;
c a b;
c b a].
When I use M_P = perms(M), I could not obtain the [M_P] written above. it permutation all the value inside the matirices, however I just want permutation just matrices (a,b,c) then, place the values of matrices. I would appriciate it you can help me
Thanks in advance

採用された回答

Bruno Luong
Bruno Luong 2022 年 10 月 28 日
a = [1,2;3,4]; b = [2,5;1,6]; c = [3,7;2,4];
abc= {a,b,c};
abc=perms(abc)
abc = 6×3 cell array
{2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double}
abc=cell2mat(abc)
abc = 12×6
3 7 2 5 1 2 2 4 1 6 3 4 3 7 1 2 2 5 2 4 3 4 1 6 2 5 3 7 1 2 1 6 2 4 3 4 2 5 1 2 3 7 1 6 3 4 2 4 1 2 3 7 2 5 3 4 2 4 1 6
  3 件のコメント
Bruno Luong
Bruno Luong 2022 年 10 月 29 日
Take a look at cellfun
It's funny that you ask to create data in format that you don't know how to work with. It is better that you don't jump quickly and think more about the data structure that you know how to manipulate downstream.
Might be what you need is 4D array and not a 2D array of all permulations clump together.
Peiman Khandar
Peiman Khandar 2022 年 10 月 29 日
I see. So in that case are you recommending an otherway to obtain my permutation function cause I need to do mathematical operations on it

サインインしてコメントする。

その他の回答 (1 件)

Rik
Rik 2022 年 10 月 28 日
編集済み: Rik 2022 年 10 月 28 日
You're close. You just need to store a, b, and c in a cell array and use perms to create indices.
The benefit of this approach is that you can extend it to more or fewer elements (although you will run into memory constraints fast with a larger number of matrices).
a = [1,2;3,4]; b = [2,5;1,6]; c = [3,7;2,4];
collation = {a,b,c};
inds = perms(1:numel(collation))
inds = 6×3
3 2 1 3 1 2 2 3 1 2 1 3 1 3 2 1 2 3
M_P = collation(inds)
M_P = 6×3 cell array
{2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double} {2×2 double}
M_P = cell2mat(M_P)
M_P = 12×6
3 7 2 5 1 2 2 4 1 6 3 4 3 7 1 2 2 5 2 4 3 4 1 6 2 5 3 7 1 2 1 6 2 4 3 4 2 5 1 2 3 7 1 6 3 4 2 4 1 2 3 7 2 5 3 4 2 4 1 6
  7 件のコメント
Bruno Luong
Bruno Luong 2022 年 10 月 29 日
a = [1,2;3,4]; b = [2,5;1,6]; c = [3,7;2,4];
abc= {a,b,c};
abc=perms(abc);
2*abc{1,1}
ans = 2×2
6 14 4 8
Peiman Khandar
Peiman Khandar 2022 年 10 月 29 日
編集済み: Peiman Khandar 2022 年 10 月 29 日
Thanks a lot Bruno (sorry for confusion)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by