MATLAB,Python,Scilab,Julia比較 その17【基本的な使い方⑦】

MATLAB,Python,Scilab,Julia比較 その17【基本的な使い方⑦】 数値計算
MATLAB,Python,Scilab,Julia比較 その17【基本的な使い方⑦】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/

はじめに

前回は、Python(Numpy)、Scilabでスライシングを実施。
Pythonは言語仕様上の都合で表現が異なるが、ScilabはMATLABと同一になる。

そして、今回はJulia

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

Juliaでスライシング

フクさん
フクさん

おおよそMATLABと似たような感じで出来るっぽいので、
まず挙動を見てみよう。

# スライシング
> A=[1 2 3; 4 5 6; 7 8 9]
3×3 Matrix{Int64}:
 1  2  3
 4  5  6
 7  8  9

> A[1,2]
2

> A[2,2]
5

> A[2,3]
6

> A[2,:]
3-element Vector{Int64}:
 4
 5
 6

> A[2,2:3]
2-element Vector{Int64}:
 5
 6

> A[:,3]
3-element Vector{Int64}:
 3
 6
 9

Juliaの挙動を見て

太郎くん
太郎くん

確かに書き方はMATLABにかなり似てるね。

太郎くん
太郎くん

違いは、

  • 配列は”(“、”)”じゃなくて”[“、”]”で囲んでる点。
  • A[2,:]、A[2,2:3]の挙動を見ると、切り出した部分がベクトルの場合、無条件で列ベクトルになる。
太郎くん
太郎くん

って感じか。

フクさん
フクさん

そうだね。
MATLABは切り出す方向に合わせたベクトルになっていたが、
Juliaはベクトル≒列ベクトルが基本だからね。
ただ、ベクトルではなく、行列として抜き出した場合は、行と列の関係は維持されるな。

> A[1:2,:]
2×3 Matrix{Int64}:
 1  2  3
 4  5  6
太郎くん
太郎くん

ベクトルの時は要注意ってことか。

まとめ

フクさん
フクさん

まとめだよ。

  • Juliaでスライシングを実施。
  • 基本的にはMATLABと似た感じ。
    • ただし、配列添え字用のカッコが違う。
    • あと、スライシングの結果、ベクトルとなった場合は列ベクトルになる。
    • 行列としてスライシングした場合は、元の行と列の関係は維持される。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました