Show older comments
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 Comments
Jiro Doke
on 11 Jan 2019
上記に書かれた規則的な並びを表す行列は持っていますか?もしくはそれを作成する数式があればいいのですが。それが分かれば
A を 62481x1 のベクトルとし、id をその規則的な並びを表す行列とすると
A(id)
で並べ替えられます。
Jun
on 11 Jan 2019
Jiro Doke
on 11 Jan 2019
質問内にありましたこの行列のことです。
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
on 11 Jan 2019
算数の宿題みたいで懐かしかったのでやってみました。
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
on 15 Jan 2019
Kazuya
on 15 Jan 2019
あとは jiro さんの言う通り
A(id)
を実行するだけかと思います。下に回答しますので、まずは試してみて、うまくいかなかったらその詳細とともにコメントください。
Accepted Answer
More Answers (0)
Categories
Find more on 線形代数 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!