チートシート

Python ユーザー向け MATLAB

MATLAB は、主に計算量の多い科学技術計算への使用を想定した言語です。MATLAB は、反復的な解析のために調整されたデスクトップ環境と、行列演算や配列演算を直接表現するプログラミング言語を兼ね備えています。MATLAB の原理と API 設計について理解し、学習にお役立てください。

MATLAB で Python を強化

MATLAB の高度なツールを Python ワークフローに直接統合します。

Python 構文 MATLAB 構文 目的 MATLAB の例
# %

コメント

% hello
print セミコロン (;) を行末に付けない

出力を表示

x
/ ...

次の行へ続ける

x = 1+...2;
os !

オペレーティング システムのコマンド

! echo hi
+ - * / + - * /

算術演算子

x = 1+2
** ^

指数

x = y^2
* / ** .* ./ .^

要素単位の演算子

x = [1 2].* [3 4]
not, and, or ~ & |

NOT、AND、OR の論理演算子

if x<2 & x>2
del clear

メモリから変数をクリア

clear x y
clear clc

コマンドウィンドウをクリア

clc
MATLAB 構文 目的
( )

インデックス (コピーオンライト)

x(1,1)
[ ]

配列を作成

x = [1 2 3]

配列を連結

z = [x ; y]
{ }

cell 配列を作成

x = {42; "hello world"}

コンテナーから内容を抽出

x{1,1}
.

クラスプロパティまたはメソッドにアクセス

obj.Data

table または構造体フィールドを参照

t.FieldName
  • 最初の要素のインデックスは 1 です。
  • インデックスの範囲は、左右両方を含みます。
  • インデックス付けの方法には、N 次元インデックス (行,列)、線形インデックス (要素番号)、論理インデックス (条件文) などがあります。
関数の作成

関数ファイル内で関数を宣言することができます。入力引数は丸括弧で囲みます。

function z = foo(x,y)
   ...
end

複数の出力は角括弧で囲みます。

function [a,b] = foo(x,y)
    ...
end

入力引数と名前-値のペアを指定した関数の呼び出し

  y = foo(x,y,"Name",Value)

類似のデータ型:

Python MATLAB
float double, single
complex complex single, complex double
int (u)int8, (u)int16, (u)int32, (u)int64
float(nan) NaN
float(inf) inf
str str, char
bool logical
dict struct
list, tuple cell
pandas.dataframe table

MATLAB の既定の設定では、数値はすべて倍精度の浮動小数点数として保存されます。Pythonでは、一部の数値は整数として、その他は浮動小数点数として保存されます。MATLAB では、x=4y=4.0 のとき、x は常に y と等しくなります。

ステートメント

for

for i = 1:10
   ...
end

if

if x<
   ...
   elseif x == 2    
   else
   ...
end

while

while x<3
   ...
end

switch-case

switch switch_arg
   ...
   case case_arg
   ...
end

try-catch

try
   ...
   catch
   ...
end
クラスの定義 クラスの使用
classdef MyClass
   properties
      MyProp
   end
   methods
      function obj = MyClass(val)
      end
      function y = MyMethod(obj,x)
      end
   end
end
  • クラスと同じ名前でクラス定義を保存する

    MyClass.m
  • クラスのオブジェクトを作成する

    a = MyClass
  • プロパティにアクセスする

    a.MyProp
  • メソッドを呼び出して操作を実行する

    b = MyMethod(a,val)
  • 参照渡しを行うため、ハンドルクラスを作成する

    classdef myclass < handle
       ...
    end