MATLAB & Simulinkメモ

プロジェクト - ウィーンブリッジ発振器

↓ はの誤り。

周波数応答が見たいとき

電気回路シミュレーション -> 入門フィルター回路 -> 周波数応答 Rate Transition ブロックはSimulink -> Signal Attributes ライブラリ [出力端子のサンプル時間] パラメーターは、離散信号のサンプル時間です。ビデオで触れたように、これは少なくとも、入…

Simulink入門 / Simulinkのリソース

Simulink のリソース Simulink 入門ガイド - モデルの階層構造や設計の原則など、より高度なトピックまで扱う一連のチュートリアルです。 https://www.mathworks.com/help/releases/R2022a/simulink/getting-started-with-simulink.html MathWorks の例 - ア…

プロジェクト - ハヤブサのダイブ

Simulinkで単振り子をモデル化

インテグレーターブロックを知ったので単振り子をモデル化してみる。θは鉛直方向下向きを0〔rad〕、左廻りをプラスとする。θが角度、θ'が角速度、θ''が角加速度。 θ'' = -(重力加速度 / 振り子の棒の長さ) * sin(θ) https://github.com/ti-nspire/MATLAB/blo…

サーモスタット モデル

連続方程式のモデル化

Simulinkで二相発振器をモデル化

遅延ブロックを知ったので、「sin、cos を再帰的に求める / 加法定理による方法 & IIR フィルターによる方法 / Python / それに意味のないとき - Qiita」で試した二相発振器(IIR版)をSimulinkでも試してみる。 https://github.com/ti-nspire/MATLAB/blob/mai…

差分方程式のモデル化

ムーア近傍の和を求める

畳み込みの函数はたくさんあるようだがここではimfilter()とconv2()とを試した。imfilter()は"circular"を指定すればトーラス形状とみなされたが、引数はdoubleしか受け付けなかった。 kernel=[ 1,1,1; 1,0,1; 1,1,1]; mat_0=[ 1,1,0,0,1,1,0,0; 1,1,1,1,0,0…

ユーザー定義函数をSimulink側で作る

下のような形で定義する。powerが返値、deltaHが引数。%はコメント。fcnが函数名ということか? function power = fcn(deltaH) Cp = 0.35; % Power coefficient rho = 1000; % Density of water, kg/m^3 A = pi*10^2; % Area of turbine blade g = 9.81; % A…

共通の変数をSimulink側で作る

[場所]は[ベース ワークスペース]にする。

Switchブロックは3項演算子であった

Simulink入門 -> プロジェクト - 自動車のパフォーマンス モードまで。LabVIEWと何が違うのか今のところ分からない。 Simulink > Signal Routing ライブラリ ↓ これと同じ。 return (Sine_Wave > 0) ? 4 : -2

MATLAB入門 / MATLAB入門の概要

MATLAB入門: 日本時間2022年5月2日(月曜日)に修了

size()、length()、numel()

size()は次元ごとの要素数を返す。2次元なら[行数 列数]を返す。 length()は各次元の要素数のうち最大の要素数を返す。だからmax(size())と同じこと。 numel()は全要素数を返す。だからprod(size())と同じこと。 続きhttps://matlabacademy.mathworks.com/R2…

numel()

「ニューメル」ではなくthe number of elementsであった。要素数を返す函数。

複数のプロットを重ねて表示する / hold on、hold off

hold onは解除するまで有効。解除するときはhold offを実行する。 plot(sample,mass2,"r*") hold on plot(sample,mass1,"ks") 続き https://matlabacademy.mathworks.com/R2021b/jp/portal.html?course=gettingstarted#chapter=10&lesson=1&section=1

多値を個別の変数に代入する

行数をdrに、列数をdcに代入する。 [dr dc]=size(data) 多値のいずれかが要らない場合は変数にチルダ~を使う。カンマが必要。 [~, dc]=size(data)

行列の積と要素同士の積と

乗算演算子*は行列の積。 ドット積演算子.*は要素同士の積。

配列の要素を参照する

インデックスは1ベースであった。 ―――――――――――――――――――――――――――――――――― 追加問題: https://matlabacademy.mathworks.com/R2021b/jp/portal.html?course=gettingstarted#chapter=5&lesson=2&section=1インデックスは連続していない数値でも構いません。densit…

配列

MATLABの変数はすべて配列との由。 1行配列はスペースまたはカンマで区切る。 x=[2 3] 1列配列はセミコロンで区切る。 x=[7;9] 2行3列にする場合 x=[3 4 5;6 7 8] ↓これでx=[1 2 3 4]と同じ。大括弧は不要。 x=1:4 1から0.5刻みで5までの1行配列。大括弧は不…

format long、format short

デフォルトでは小数点以下4桁まで表示。 format longを実行すると表示桁が増える。 format shortで元に戻る。 続きhttps://matlabacademy.mathworks.com/R2021b/jp/portal.html?course=gettingstarted#chapter=3&lesson=2&section=1

save、load、clear、clc

ワークスペースをfoo.matというMATファイルに保存する。 save foo ワークスペースを空にする。 clear foo.matというMATファイルから変数を読み込む。 load foo ワークスペースをクリーンアップする。 clear 一部の変数のみの読み込み、保存 load myData m %…

変数名

先頭は必ず英字。 以降は、英字、数字、アンダースコア (_)が使える。 case-sensitive。