MATLAB/simulink

MATLAB/simulink

MATLABで忘却係数付き逐次最小二乗法を実装する

忘却係数付き逐次最小二乗法の更新則は \begin{align}\hat{\theta}_{N} &= \hat{\theta}_{N-1} + \dfrac{P_{N-1} z_{N} }{\rho + z_{N}^{T} P_{N-1}...
MATLAB/simulink

インボリュート曲線を描く

歯車の設計にはインボリュート曲線が使われる。今回は基礎円とそこから延びるインボリュート曲線を描く。 インボリュート曲線とは円柱に巻き付けられた糸を撓ませることなく引き出した時、糸の先端がたどる軌跡を示す曲線を言う。 媒介変数を用いて \be...
MATLAB/simulink

MATLAB2021aにおけるfor文の計算速度

MATLABを使うときよく言われるのは「for文は遅い」だと思う。今回は2021aでその速度を調べた。 使用したソースコード N=100000000; A1=1:1:N; A2=1:1:N; B1=zeros(1,N); tic for i...
MATLAB/simulink

MATLABでFizz Buzz

Fizz Buzzとは ・3の倍数→Fizz ・5の倍数→Buzz ・15の倍数→Fizz Buzz つまり 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fi...
MATLAB/simulink

離散システムのボード線図を書く

\begin{align}G=\frac{1}{s+1}\end{align} を離散化する。c2dで離散化すると伝達関数は \begin{align}G=\frac{0.00995}{z-0.99}\end{align} となる。離散シス...
MATLAB/simulink

フェルマーの小定理をMATLABで計算してみる

フェルマーの小定理は\(p\)が素数、\(a\)を\(p\)の倍数でない整数とすると \begin{align}a^{p-1} \equiv 1 \pmod{p}\end{align} が成り立つというものである。\(\mathrm{mod...
MATLAB/simulink

フェルマーの最終定理をMATLABで計算してみる

フェルマーの最終定理とは \begin{align}z^n=x^n+y^n (n>2)\end{align} を満たす自然数の組は存在しないというものである。\(n=2\)の場合はピタゴラスの定理となり解が存在する。この場合の解は直角三角形...
MATLAB/simulink

MATLABを使って完全数を探す

完全数とは自身の約数の和が自身の二倍になるような整数のことである。例えば\(6\)は \begin{align}1+2+3+6=2\times 6\end{align} となり完全数である。今回はこれをMATKLABを使って探索する。 コー...
MATLAB/simulink

Sherman–Morrison–Woodburyの公式をMATLABで計算する

Sherman–Morrison–Woodburyの公式とは \begin{align}(A+BDC)^{−1}=A^{−1}−A^{−1} B (D^{−1}+CA^{−1}B)^{−1} CA^{−1}\end{align} である。今...
MATLAB/simulink

Ziegler-Nicholsの限界感度法を用いたPIDゲインを調整法

PID制御器をZiegler-Nicholsの限界感度法を用いて調整する。限界感度法は1時遅れ系+むだ時間もしくは積分系むだ時間の時有効となる手法である。 まず、simulinkで次のような 1時遅れ系+むだ時間のPID制御モデルを作成する...
MATLAB/simulink

MATLABを使って行列の指数関数を計算

MATLABを使って前回の記事で考察した行列の指数関数を計算する。簡単に復習をすると行列の指数関数は \begin{align} e^A=\sum_{k=0}^{\infty}\frac{(P^{-1} A P)^k}{k!}=P^{-1}...
MATLAB/simulink

simulinkでシミュレーションした結果をワークスペースに書き出してグラフを作成する

simulinkでシミュレーションした結果のグラフをMATLABを使って出力する。 前回の記事のモデルにTo Workspaceブロックを次のように追加する。 このようにすればワークスペースにoutの構造体として格納されるので、MATLAB...
MATLAB/simulink

simulinkで状態方程式をシミュレーションする

前回の記事の続き 前回のパラメータを使ってsimulinkでシミュレーションした。モデルはこれ。 結果は同じになる。
MATLAB/simulink

古典制御と現代制御の双方の視点からばねマスダンパ系を解析する

ばねマスダンパ系について、古典制御と現代制御の各変数の相互関係とそれらの解析結果が一致することを示す。 ばねマスダンパ系の運動方程式は \begin{align}M \ddot{y}(t) + C \dot{y} (t) + ky (t) ...
MATLAB/simulink

クラーク変換とパーク変換をとりあえず試す

細かいことは気にせずクラーク変換を実装する。クラーク変換は \begin{align}\begin{bmatrix}\alpha \\ \beta \\ \gamma\end{bmatrix}=k \begin{bmatrix}1 & -\...
MATLAB/simulink

線形時不変なシステムのH∞ノルムを計算する

線形時不変なシステムのH∞ノルムを計算する。適当な伝達関数 \begin{align}G(s)=\frac{1}{(s+1)(s+2)}\end{align} を定義する。H∞ノルムの定義は \begin{align}\| G(j \ome...
MATLAB/simulink

線形時不変なシステムの可制御行列と可観測行列を調べる

線形時不変なシステム(A,B,C,D)の可制御性と可観測性を調べる。以前証明した結果から 可制御性行列 \begin{align}M_c=\begin{bmatrix}B & AB & \cdots & A^{n-1}B\end{bmatr...
MATLAB/simulink

MALTABを使ってボード線図を書く

MATLABでボード線図を描くとき bode(sys) とすれば即座に得られるが、今回は別の方法で描画する。 ボード線図はゲイン線図と位相線図からなり、その定義は \begin{align}gain &: 20 \log_{10} |G(j...
MATLAB/simulink

MATLABでもっとも単純な数値積分と数値微分を実装する

伝達関数 \begin{align}P=\frac{1}{s^2+1}\end{align} の単純な数値積分と数値微分を考える。 始めに確認のため、連続時間での結果を確認する。連続時間での微分と積分はラプラス演算子を用いて \begin{...
MATLAB/simulink

ボード線図の示す意味と応答への影響

伝達関数とボード線図の関係を考察する。今伝達関数が \begin{align}G(s)=\frac{s^2+1}{s^2+6s+8}\end{align} で与えられているとする。この時の分子多項式に\(s=-j \omega\)を代入した...