行列の並べ替え
이전 댓글 표시
62481×1 doubleのデータがあります。これを350×350に並べ替えたいと思っています。
ただ、問題はその並べ変えの仕方です。データの(1,1)を1 (2,1)を2・・・とすると、
1 2 4 7 11 ・・・
2 3 5 8 12・・・
4 5 6 9 13・・・
7 8 9 10 14・・・
11 12 13 14 15・・・
・
・
・
上記のように、複雑ではありますが、規則的に並べ替えたいと思っていますがうまくできません。
お力をお貸しください
댓글 수: 6
Jiro Doke
2019년 1월 11일
上記に書かれた規則的な並びを表す行列は持っていますか?もしくはそれを作成する数式があればいいのですが。それが分かれば
A を 62481x1 のベクトルとし、id をその規則的な並びを表す行列とすると
A(id)
で並べ替えられます。
Jun
2019년 1월 11일
Jiro Doke
2019년 1월 11일
質問内にありましたこの行列のことです。
1 2 4 7 11 ・・・
2 3 5 8 12・・・
4 5 6 9 13・・・
7 8 9 10 14・・・
11 12 13 14 15・・・
・
・
・
私の解釈ではこれが並びの順番を表す行列(350x350)ですよね。
なんとなく規則は分かるのですが、その規則を数式化していただくと簡単に作成できます。
Kazuya
2019년 1월 11일
算数の宿題みたいで懐かしかったのでやってみました。
N = 5; % 行列サイズ(任意に決めてください)
base = 1+cumsum(0:N-1);
A = base + (0:N-1)';
uA = triu(A)+triu(A,1)';
で作れます。
uA =
1 2 4 7 11
2 3 5 8 12
4 5 6 9 13
7 8 9 10 14
11 12 13 14 15
Jun
2019년 1월 15일
Kazuya
2019년 1월 15일
あとは jiro さんの言う通り
A(id)
を実行するだけかと思います。下に回答しますので、まずは試してみて、うまくいかなかったらその詳細とともにコメントください。
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 線形代数에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!