MATLAB学習リンク
自律ロボティクス開発ソリューション
MATLAB入門
デスクトップの基礎
現在のフォルダ:使用するファイルにアクセスする
コマンドウィンドウ:プロンプトが指示するコマンドラインにコマンドを入力する
ワークスペース:作成したデータやファイルからインポートしたデータ
出力変数が設定されてないとMATLABは変数ansを使って計算結果を保存する
行列および配列
MATLABは基本的に行列や配列を演算するように設計されている
MATLAB変数はデータ型にかかわらず全て多次元配列である
z = zeros(5,1)
a + 10:単一の算術演算子または関数を使用して行列中の全ての値を処理することができる
sin(a)
a’:転置行列
p = a*inv(a):*演算子で各行と各列の内積計算による標準の行列乗算ができる
format long
p = a.*a:要素の乗算
a.^3
sqrt(-1)
行列の行と列注意!!!!!!!!!!
配列インデックス付け
A = magic(4)
A(4, 2)
A(8)
A(4,5) = 17
A(1:3, 2)
A(3,:)
B = 0:10:100
ワークスペース変数
A = magic(4);
B = rand(3,5,2);
save myfile.mat
load myfile.mat
テキストと文字
t = “Hello World”;
whos t
f = 71;
c = (f-32)/1.8;
tempText = "Temperature is " + c + "C"
strlength(A)
seq = 'GCTAGAATCC';
whos seq
seq(4)
関数の呼び出し
max(A)
max(A, B)
maxA = max(A)
disp(‘hello world’)
clc
2次元および3次元プロット
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
xlabel('x')
ylabel('sin(x)')
title('Plot of the Sine Function')
plot(x,y,'r--')
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
hold on
y2 = cos(x);
plot(x,y2,':')
legend('sin','cos')
hold off
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
t = 0:pi/10:2*pi;
X,Y,Z = cylinder(4*cos(t)); subplot(2,2,1); mesh(X); title('X');
subplot(2,2,2); mesh(Y); title('Y');
subplot(2,2,3); mesh(Z); title('Z');
subplot(2,2,4); mesh(X,Y,Z); title('X,Y,Z');
プログラミングとスクリプト
edit mysphere
r = 2;
surf(x*r, y*r, z*r)
axis equal
A = 4*pi*r^2;
V = (4/3)*pi*r^3;
% Create and plot a sphere with radius r.
プレーンテキストでコードとコメントを記述する代わりにライブスクリプトの書式オプションを使用してコードを拡張できる
ファイルタイプを.mlxに変更することでmysphereをライブスクリプトに変換できる
コードのコメントを書式設定されたテキストに置き換える
N = 100;
f(1) = 1;
f(2) = 1;
for n = 3:N
f(n) = f(n-1) + f(n-2);
end
f(1:10)
MATLABは特定の場所にあるスクリプトや他のファイルを検索する
スクリプトを実行するにはファイルが現在のフォルダー化探索パス乗のフォルダーになければならない
ヘルプとドキュメンテーション
doc mean
mean(
help mean
行列と魔法陣
MATLABは迅速かつ簡単に行列全体に働く
行列を表現する方法
・明示的に要素のリストを入力
・外部データファイルから読み込み
・組み込み関数を使って作成
・ユーザー独自の関数を使って行列を作成し、ファイルに保存
要素を入力
・空白、またはコンマを使って、行の要素を分離
・セミコロンを使って行の終わりを設定
・要素全体を で囲む
sum(A)
sum(A,2)
diag(A)
sum(diag(A))
diag(fliplr(A))
zeros(2,4)
5*ones(3,3)
randn(4,4)
式
MATLABでは全て行列
10の冪乗はeを使う
MATLABでは情報的配列演算をドット、小数点を使って表現する
n = (0:9);
format short g
x = (1:0.1:2);
基本的な初等数学関数はある
数学関数一覧を得るには
help elfun
help specfun
help elmat
と入力
pi, i, j, eps, realmin, realmax, Inf, NaN
z = sqrt(besselk(4/3, rho-i))
コマンドの入力
formatは数値形式を制御
format compact
A = magic(100);
ステートメントが長いときはReturn または Enterキーで新しい行にコマンドを続けられる
インデックス
A(i,j)はAのi番目の行j番目の列の要素
行列で定義されている要素以外の要素に値を格納しようとすると、新しい要素を行列に付け加えてサイズが大きくなる
A(1:4,4)
sum(A(:, end))
X(:,2) = []
X(2:2:10) = []
isfinite(x)
x = x(abs(x-mean(x)) <= 3*std(x))
k = find(isprime(A))’
配列のタイプ
A = magic(4);
M = zeros(4,4,24);
for k=1:24
M(:,:,k) = A(:,p(k,:));
end
線形代数
行列の演算は要素単位
同じ長さの行ベクトルと列ベクトルの乗算は順番を変えても計算結果は同じ、スカラーか行列
B’で転置を表す
複素数の場合複素きょうやく転置となるので、z.’が普通の転置
*で行列の乗算を表す
eye(m,n)
eye(n)で単位行列
X = inv(A)
一部の行列は近特異行列で、逆行列が存在するが計算は数値誤差の影響を受ける
関数condは逆行列から得られる結果の精度がわかる逆行列計算の条件数を計算する
クロネッカーテンソル積
線型方程式
分解
これスキー分解
LU分解
QR分解
行列分解のマルチスレッド計算
固有値
固有値分解
複数の固有値
Schur分解
特異値プロット
計算上の考慮事項
一般解
正方システム
過決定システム
劣決定システム
複数の右辺の解法
反復法
マルチスレッド計算
非線型関数の演算
関数ハンドル
任意のMATLAB関数にハンドルを作成し、関数を参照するための手段としてそのハンドルを使用することができる
@wを使って定義する
関数を引数とする関数
多変量データ
MATLABは多変量データに対して、列方向の解析を行う
データ解析
データ解析にはいくつかの標準要素がある
・前処理
・まとめ
・可視化
・モデリング
データの可視化
2次元散布図
3次元散布図
散布図配列
グラフ内のデータ配列
データのモデリング
多項式回帰
一般線型回帰
基本プロット関数
1つのグラフ内に複数のデータセットをプロット
虚数データと複素数データのグラフ
既存のグラフにプロットを追加
1つのFigureウィンドウに複数のプロットを表示
subplot
メッシュプロットと表面プロットの作成
meshとsurfを使う
meshでは定義点を結ぶラインのみに色のついたワイヤーフレームの表面が描かれる
surfでは点を結ぶラインと表面の構成面が色彩表示される
イメージの表示
2次元の数値配列はイメージとして表示される
イメージでは、配列要素がイメージの明度または色を決める
グラフィックスの印刷
印刷は2つの方法がある
・普通にファイルメニューから印刷
・コマンドラインからprint関数を使用する
printコマンドはドライバーやファイル形式をより詳細にコントロールする
グラフィックス オブジェクトの取り扱い
グラフィックスオブジェクトはグラフを表示するために用いる基本要素
階層にまとめられる

プロット関数を呼び出すと、MATLABはFigureウィンドウ、座標軸、ライン、テキストなどの左mざまなグラフィックスオブジェクトを使用してグラフを作詞する
bar(y,'FaceColor','green','EdgeColor','black','LineWidth',1.5)
x = 1:10;
y = x.^3;
h = plot(x,u);
h.Color = “red”;
get(h)
set(h)
allchild
ancestor
copyobj
delete
findall
gca
gcf
gco
get
ishandle
set
特殊なプロット関数を定義するとカスタマイズグラフの作成を単純化できる
関数findobjを使って特定のプロパティ値を持つオブジェクトを検索することもできる
フロー制御
if
elseif
else
end
switch
for
while
continue
break
return:呼ばれた関数の中にreturn を挿入することで強制的に早く終了し起動した関数に制御を移すことができる
MATLABをスピードアップする1つの方法として、ベクトル化するということがある
スクリプトと関数
% Investigate the rank of magic squares
r = zeros(1,32);
for n = 3:32
r(n) = rank(magic(n));
end
bar(r)
type rank
無名関数
メイン関数とローカル関数
プライベート関数
入子関数
グローバル変数
コマンドと関数構文
言語の基礎
コマンドの入力
コマンドウィンドウでのステートメントの入力
出力の書式設定
関数の呼び出し
複数行での長いステートメントの継続
お気に入りのコマンドの再実行
実行のていし
使用する関数の検索
コマンドウィンドウまたはコマンド履歴でのテキスト検索
入力時の構文チェック
ダイアリファイルへの書き込み
変数名
コマンドと関数構文コマンド履歴の設定
コマンドウィンドウの設定
キーボードの設定
行列および配列
いろんな関数
データ型
いろんなデータ型
演算子と基本的な演算
いろいろな演算子
ループと条件付きステートメント
関数一覧
データのインポートと解析
データのインポートとエクスポート
いろんな関数
大きなファイルとビッグデータ
いろんな関数
データの前処理
いろんな関数
記述統計
いろんな関数
視覚的探索
いろんな関数
数学
初等数学
関数
線型段数
関数
乱数発生器
関数
内挿
関数
最適化
関数
数値積分と微分方程式
関数
フーリエ解析とフィルター処理
関数
スパース行列
関数
グラフとネットワークアルゴリズム
関数
計算幾何学
三角形分割表現
Delaunay三角形分割
空間探索
境界探索
ボロノイ線図
基本的な多角形
「グラフィクス」
2次元および3次元プロット
書式設定と注釈
イメージ
印刷と保存
グラフィックスオブジェクト
グラフィックスパフォーマンス
「プログラミング」
スクリプト
関数
クラス
ファイルとフォルダー
プログラミングユーティリティ
「アプリの作成」
App Designer
Guideまたはプログラムのワークフロー
アプリのパッケージ化と共有
「ソフトウェア開発ツール」
デバッグと解析
パフォーマンスとメモリ
プロジェクト
テストフレームワーク
ツールボックスの配布
「外部言語インターフェイス」
C++ライブラリ
Cライブラリ
MEXファイル関数
Javaライブラリ
Pythonライブラリ
.NETライブラリ
COMオブジェクト
HTTPインターフェイス
WSDL
C++からのMATLABの呼び出し
JavaからのMATLABの呼び出し
PythonからのMATLABの呼び出し
CからのMATLABの呼び出し
COMオートメーションサーバーとしてのMATLABの呼び出し
「環境と設定」
起動と終了
基本的な設定
プラットフォームとライセンス
システムコマンド
ヘルプとサポート
Math Works
MATLAB
MATLAB講座
強化学習
MATLABベストプラクティス
MATLAB柱
アドベントカレンダー2020
Simulink Onramp
MATLABでディープラーニング
MATLABに慣れた人がPythonを使うときの注意点
MATLAB, Python, Scilabの使い方比較
MATLABおよびSimulinkトレーニング
MATLAB関連
・Simulink
マルチドメインシミュレーションとモデルベースデザインのためのブロック線図環境
この環境ではシステムレベルデザイン、シミュレーション、自動コード生成、組込システムのテストと検証の繰り返し作業をサポートする
・Global Optimization Toolbox
Global Optimization Toolbox provides functions that search for global solutions to problems that contain multiple maxima or minima
・Installation and Licenseing
MathWorks製品をインストールして、幅広い製品機能を探索し、用途または業界に適したソリューションを見つける
・Optimization Toolbox
Optimization Toolboxには制約を満たしながら目的関数を最小化または最大化するパラメータを見つけるための関数が用意されている
このツールボックスにはLP, MILP, QP, NLP,などがある
・Robotics System Toolbox
マニピュレーター、モバイルロボット、ヒューマノイドロボットの設計、シミュレーション、テストを行うためのツールとアルゴリズムを提供する
このツールボックスには衝突チェック、軌跡生成、順運動学と逆運動学、剛体ツリー表現を使用したダイナミクスのためのアルゴリズムが含まれている
・ROS Toolbox
SimulinkをRobot Operating Systemに接続するインターフェイスを提供する
・Statistics and Machine Learning Toolbox
データを説明、分析およびモデル化するための関数とアプリが用意されている
・Symbolic Math Toolbox
シンボリックな数学方程式の求解、プロットおよび操作を行うための関数が用意されている
参考動画
強化学習入門:MATLAB * Simulink
TensorFlowとMATLABによるAI・自動化技術の現場展開
自動運転実用化に向けたホンダの取組
車載ECU周辺回路の故障注入のシミュレーション検証技術
可視化して理解するディープラーニング
MATLABを使ったMPCの例をまとめたリポジトリ