チートシート

MATLAB 基本関数リファレンス

Python を MATLAB で強化

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

MATLAB 環境

clc コマンドウィンドウをクリア
help fun fun のインラインヘルプを表示
doc fun fun のドキュメンテーションを開く
load("filename","vars") .mat ファイルから変数を読み込む
uiimport("filename") 対話形式のインポートツールを開く
save("filename","vars") 変数をファイルに保存
clear item ワークスペースから項目を削除
examplescript examplescript という名前のスクリプトファイルを実行する
format style 出力の表示形式を設定
ver インストールされているツールボックスの一覧を取得
tic, toc タイマーの開始および終了
Ctrl+C 現在の計算を中止

配列変数の定義と変更

a = 5 値 5 をもつ変数 a を定義する

A = [1 2 3; 4 5 6]

A = [1 2 3

4 5 6]

A を 2 行 3 列の行列として定義する。空白で列を区切り、";" または改行で行を区切る
[A,B] 配列の水平方向の連結
[A;B] 配列の垂直方向の連結
x(4) = 7 x の 4 番目の要素を 7 に変更
A(1,3) = 5 A(1,3) を 5 に変更
x(5:10) x の 5 ~ 10 番目の要素を取得
x(1:2:end) x の要素を 1 つおきにすべて取得 (1 番目から最後まで)
x(x>6) 6 より大きい要素を一覧表示
x(x==10)=1 条件を使用して要素を変更
A(4,:) A の 4 行目を取得
A(:,3) A の 3 列目を取得
A(6, 2:5) A の 6 行目の 2 番目から 5 番目の要素を取得
A(:,[1  7])=A(:,[7  1]) 1 列目と 7 列目を入れ替える
a:b a+n≤b のとき [a, a+1, a+2 ..., a+n]
a:ds:b 間隔 ds の等間隔ベクトルを作成
linspace(a,b,n) 等間隔な n 個の値を含むベクトルを作成
logspace(a,b,n) 対数的に等間隔な n 個の値を含むベクトルを作成
zeros(m,n) 要素がすべて 0 の m 行 n 列の行列を作成
ones(m,n) 要素がすべて 1  の m 行 n 列の行列を作成
eye(n) n 行 n 列の単位行列を作成
A=diag(x) ベクトルから対角行列を作成
x=diag(A) 行列の対角要素を取得
meshgrid(x,y) 2D および 3D グリッドを作成
rand(m,n), randi 一様分布の整数の乱数を作成
randn(m,n) 正規分布する乱数を作成

演算子および特殊文字

+, -, *, / 行列の算術演算
.*, ./ 配列の乗算および除算 (要素単位の演算)
^, .^ 行列および配列のべき乗
\ 左除算または線形最適化
.', ' 転置および複素共役転置
==, ~=, <, >, <=, >= 関係演算子
&&, ||, ~, xor 論理演算 (AND、NOT、OR、XOR)
; 出力の非表示
... 次の行に続ける (... を入力して改行)
% Description コメント
'Hello' 文字ベクトルの定義
"This is a string" string の定義
str1 + str2 string の連結

特殊な変数と定数

ans 直前の実行結果
pi π=3.141592654…
i, j, 1i, 1j 虚数単位
NaN, nan 非数 (ゼロ除算)
Inf, inf 無限大
eps 浮動小数点相対精度

複素数

i, j, 1i, 1j 虚数単位
real(z) 複素数の実数部
imag(z) 複素数の虚数部
angle(z) 位相角 (ラジアン単位)
conj(z) 各要素の複素共役
isreal(z) 配列が実数かどうかを判別

初等関数

sin(x), asin 正弦および逆正弦 (引数はラジアン単位)
sind(x), asind 正弦および逆正弦 (引数は度単位)
sinh(x), asinh 双曲線正弦および逆双曲線正弦 (引数はラジアン単位)
以下の三角関数についても同様です。costancscsec、および cot
abs(x) x の絶対値、複素数の大きさ
exp(x) x の指数
sqrt(x), nthroot(x,n) 平方根、実数の n 乗根
log(x) x の自然対数
log2(x), log10 2 と 10 それぞれを底とする対数
factorial(n) n の階乗
sign(x) x の符号
mod(x,d) 除算後の剰余 (モジュロ)
ceil(x), fix, floor 正の無限大方向、ゼロ方向、負の無限大方向への丸め
round(x) 最も近い小数または整数への丸め

プロット

plot(x,y,LineSpec)
ラインスタイル: -, --, :, -.
マーカー: +, o, *, ., x, s, d
色: r, g, b, c, m, y, k, w
x に対して y をプロット
(LineSpec はオプション)
LineSpeclinestylemarker、および color を文字列として組み合わせたものです。
例: "-r" = マーカーを使用しない赤色の実線
title("Title") プロットタイトルを追加
legend("1st", "2nd") 座標軸に凡例を追加
x/y/zlabel("label") x/y/z 軸ラベルを追加
x/y/zticks(ticksvec) x/y/z 軸の目盛りを取得または設定
x/y/ztickangle(angle) x/y/z 軸の目盛りラベルを回転
x/y/zlim X/Y/Z 軸の範囲を取得または設定
axis(lim), axis style 軸の範囲とスタイルを設定
text(x,y,"txt") テキストを追加
grid on/off 座標軸グリッドを表示
hold on/off 新しいプロットの追加時に現在のプロットを保持
subplot(m,n,p),
tiledlayout(m,n)
タイル表示の座標軸を作成
yyaxis left/right 2 本目の Y 軸を作成
figure Figure ウィンドウの作成
gcf, gca 現在の Figure を取得、現在の軸を取得
clf 現在の Figure をクリア
close all 開いている Figure を閉じる

Table

table(var1,...,varN) 変数 var1, ..., varN のデータから table を作成
readtable("file") ファイルから table を作成
array2table(A) 数値配列を table に変換
T.var 変数 var からデータを抽出
T(rows,columns),
T(rows,["col1","coln"])
T から指定の行と列を持つ新しい table を作成
T.varname=data T の (新しい) 列にデータを割り当てる
T.Properties T のプロパティへのアクセス
categorical(A) categorical 配列を作成
summary(T), groupsummary table の概要を出力
join(T1, T2) 共通の変数を使用して table を連結

タスク (ライブエディター)

ライブエディター タスクは、ライブスクリプトに追加して、特定の一連の操作を対話形式で実行できるアプリです。タスクは、一連の MATLAB コマンドを表します。タスクで実行されるコマンドを確認するには、生成されたコードを表示します。

デスクトップでツールストリップの [ライブエディター] タブから利用できる一般的なタスクは、以下のとおりです。

  • 欠損データの削除
  • 変化点の検出
  • トレンドの除去
  • 外れ値データの削除
  • 局所的極値の検出
  • データの平滑化

プログラミング メソッド

関数
% 関数を関数ファイルまたはスクリプトファイルの 
% 末尾に保存します。関数ファイル名はファイル内の 
% 最初の関数名と同じにする必要があります 
function cavg = cumavg(x) %複数の引数を指定可能
 cavg=cumsum(x)./(1:length(x)) ; 
end
無名関数
% 関数ハンドルを介して定義 
fun = @(x) cos(x.^2)./abs(3*x);

制御構造

ifelseif、条件
if n<10
 disp("n は 10 未満") 
elseif n<=20 
 disp("n は 10 以上 20 以下") 
else 
 disp("n は 20 より大きい")
Switch Case
n = input("整数を入力: "); 
switch n 
 case -1
 disp("マイナス 1")
 case {0,1,2,3} % 4 つのケースを一緒にチェックする 
 disp("0 以上 3 以下の整数") 
 otherwise
 disp("[-1,3] の区間外の整数値") 
end % 制御構造は end で終了
for ループ
% 特定回数のループを実行し
% インデックス変数をインクリメントして
% 各反復を追跡します 
for i = 1:3 
 disp("cool"); 
end % 制御構造は end で終了
while ループ
% 条件が真である限りループを繰り返します
n = 1; 
nFactorial = 1; 
while nFactorial < 1e100 
 n = n + 1; 
 nFactorial = nFactorial * n; 
end % 制御構造は end で終了

その他のプログラミング/制御コマンド

break for ループまたは while ループの実行を終了
continue ループの次の反復に制御を渡す
try, catch ステートメントを実行し、エラーをキャッチする

数値的手法

fzero(fun,x0) 非線形関数の根
fminsearch(fun,x0) 関数の最小値を求める
fminbnd(fun,x1,x2) 区間 [x1, x2] で関数の最小値を求める
fft(x), ifft(x) 高速フーリエ変換と逆高速フーリエ変換

積分および微分

integral(f,a,b) 数値積分 (2 次元、3 次元も同様)
trapz(x,y) 台形則による数値積分
diff(X) 差分および近似微分
gradient(X) 数値勾配
curl(X,Y,Z,U,V,W) 回転および角速度
divergence(X,...,W) ベクトル場の発散を計算
ode45(ode,tspan,y0) ノンスティッフ ODE の求解
ode15s(ode,tspan,y0) スティッフ ODE の求解
deval(sol,x) 微分方程式の解を評価
pdepe(m,pde,ic,...bc,xm,ts) 1 次偏微分方程式を求解
pdeval(m,xmesh,...usol,xq) PDE の数値解を内挿

内挿および多項式

interp1(x,v,xq) 1 次元内挿 (2 次元、3 次元も同様)
pchip(x,v,xq) 区分的 3 次エルミート多項式内挿
spline(x,v,xq) 3 次スプラインデータ内挿
ppval(pp,xq) 区分的多項式の計算
mkpp(breaks, coeffs) 区分的多項式の作成
unmkpp(pp) 区分的多項式の詳細を抽出
poly(x) 指定された根 x を持つ多項式
polyeig(A0,A1,...,Ap) 多項式固有値問題の固有値
polyfit(x,y,d) 多項式の曲線近似
residue(b,a) 部分分数展開/分解
roots(p) 多項式の根
polyval(p,x) 多項式 p を x の各点で評価
polyint(p,k) 多項式積分
polyder(p) 多項式微分

行列および配列

length(A) 配列の最大次元長
size(A) 配列の次元
numel(A) 配列の要素数
sort(A) 配列要素の並べ替え
sortrows(A) 配列または table の行の並べ替え
flip(A) 配列要素の順序を反転
squeeze(A) 長さ 1 の次元を削除
reshape(A,sz) 配列の形状変更
repmat(A,n) 配列のコピーを繰り返す
any(A), all 任意/すべての要素が非ゼロかどうかを確認
nnz(A) 非ゼロの配列要素の数
find(A) 非ゼロ要素のインデックスと値

記述統計

sum(A), prod 列に沿った和または積
max(A), min, bounds 最大要素および最小要素
mean(A), median, mode 統計演算
std(A), var 標準偏差および分散
movsum(A,n), movprod, movmax, movmin, movmean, movmedian, movstd, movvar 移動統計関数 n = 移動ウィンドウの長さ
cumsum(A), cumprod, cummax, cummin 累積統計関数
smoothdata(A) ノイズを含むデータの平滑化
histcounts(X) ヒストグラムのビンのカウント数を計算
corrcoef(A), cov 相関係数、共分散
xcorr(x,y), xcov 相互相関、相互共分散
normalize(A) データの正規化
detrend(x) 多項式トレンドの削除
isoutlier(A) データの外れ値を検出

線形代数

rank(A) 行列のランク
trace(A) 行列の対角要素の和
det(A) 行列の行列式
poly(A) 行列の特性多項式
eig(A), eigs 行列の固有値およびベクトル (サブセット)
inv(A), pinv 行列の逆行列と擬似逆行列
norm(x) ベクトルまたは行列のノルム
expm(A), logm 行列指数および対数
cross(A,B) クロス積
dot(A,B) ドット積
kron(A,B) クロネッカーテンソル積
null(A) 行列のヌル空間
orth(A) 行列の範囲に対する正規直交基底
tril(A), triu 行列の下三角部分と上三角部分
linsolve(A,B) AX=B 形式の線形システムの求解
lsqminnorm(A,B) 線形方程式の最小二乗解
svd(A) 特異値分解
gsvd(A,B) 一般化特異値分解
rref(A) 行列の行簡約階段形

シンボリック数式*

sym x, syms x y z シンボリック変数を宣言
eqn = y == 2*a + b シンボリック方程式を定義
solve(eqns,vars) 指定した変数でシンボリック式を求解
subs(expr,var,val) 式の変数を置き換える
expand(expr) シンボリック式を展開
assume(var, assumption) 変数について仮定を設定
assumptions(z) シンボリック オブジェクトの仮定を表示
fplot(expr), fcontour, fsurf, fmesh, fimplicit シンボリック オブジェクトのプロット関数
diff(expr,var,n) シンボリック式を微分
dsolve(deqn,cond) 微分方程式をシンボリックに求解
int(expr,var,[a, b]) シンボリック式を積分
taylor(fun,var,z0) 関数のテイラー展開

*Symbolic Math Toolbox が必要です