Zennの「matlab」のフィード
フィード
MATLABMobileのログデータをなるべく簡潔に料理する.~加速度のログから距離の算出まで~
Zennの「matlab」のフィード
はじめに MATLABMobileで取得した加速度や角速度のデータから,移動距離や方向を算出する. なるべくfor文や自作関数を使用せず,簡潔になるようにしてみる. MATLAB Mobileの概要や使い方についてはMATLAB Mobile でのセンサー データの収集参照. また,今回のデータ・プログラム一式は下記リポジトリにある. https://github.com/Spargel125/RailwayCoordinateData/tree/main または下記のアイコンをクリックすると,直接MATLABが開ける(多分要アカウント). なお,試行錯誤の後が残っているのでご容赦く...
1年前
日本の鉄道路線をMATLABでプロットしてみる
Zennの「matlab」のフィード
はじめに 日本の鉄道路線の緯度経度が国土交通省により公開されているため, matlabでplotして遊ぶ. matlabではgeoplotを使うと簡単に地図上のプロットが作成できる. データの出典:国土交通省国土数値情報ダウンロードサイト(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N02-v2_3.html) 結論 めっちゃ楽しい!!! 今回のソースコードは下記リポジトリにある. https://github.com/Spargel125/RailwayCoordinateData/tree/main 方法 デー...
1年前
MATLABメモ
Zennの「matlab」のフィード
配列 MATLABの配列は0からではなく、1から始まるので注意が必要である 配列(横ベクトル)を縦ベクトルにする x = [1, 1]; x = x(:); disp(x); このようにすると、以下のような出力が得られる. 1 1
1年前
Moment-Based Kalman FilterのMATLABでの実装
Zennの「matlab」のフィード
はじめに 下記論文において,Moment-Based Kalman Filter(MKF)というものが提案されている. https://arxiv.org/abs/2301.09130 これは,システムの状態を確率的に扱うことにより,精度の良い推定を行うことができ,特に,非ガウスノイズ下において他のKalman Filterよりも精度向上する模様である. 提案手法は非常に面白そうなので中身を追っていったが,公開されているc++コードを読み解くのが大変だったので,MATLABで再実装する. 実装にあたっては確率変数に関するモーメント計算が必要になるが,その計算については下記記事でまとめ...
1年前
MATLABを用いた異なるサンプリング時間のデータの同期
Zennの「matlab」のフィード
はじめに 複数センサのログデータを解析するとき等,異なるデータの時間軸を合わせたいときがある. その際にデータの時間軸を同期して解析しやすくなる方法について記載する. 背景と状況例 例えば,センサーAとセンサーBによりデータが取得される場合において,サンプリング時間はt_A=2 [s],センサーBのサンプリング時間はt_B=5[s]の状況を考える. ここで,t=9[s]のときのAとBの値を計算に使いたいとき,センサーAの値はt=8[s]のときの値を,センサーBの値はt_B=5[s]のときの値を採用する必要がある. さらに,実際のログデータはサンプリング時間通りにぴったりとれている...
1年前
独立でない変数の混合三角モーメントの計算の色々な例
Zennの「matlab」のフィード
はじめに これまでの記事(下記)で混合三角モーメントの計算を行ってきた. そこで本記事では複数の確率変数の場合のモーメントについて計算する. なお,混合三角モーメントはMixed-trigonometric-Polynominal Momentsの直訳であり本記事ではこの記載でする. https://zenn.dev/spargel/articles/4a64d0157017cc https://zenn.dev/spargel/articles/a2a5ce1b6cb421 また参考に引用している文献は下記. https://arxiv.org/abs/2301.09130 M...
1年前
独立でない複数の確率変数の混合三角モーメントの計算(MATLABで確認)
Zennの「matlab」のフィード
はじめに Moment-Based Kalman Filter(以降 MKF)というものが紹介されており,理解がてら試してみる. 詳細は下記の論文を参照. MKFでは独立でない複数変数の混合三角モーメントの計算が必要となるが, 計算を進めるうえでいろいろな箇所で手こずったので,本記事では備忘がてら計算過程と結果を記す. (やっていることは変数を直交基底に変数変換して,独立した変数にしているだけだと思うのですが...その計算が大変...) 変数の取り方や記号はなるべく引用文献に合わせる. 流れてきたtweet↓ https://twitter.com/purewater0901/sta...
1年前
混合三角多項式の確率モーメント(mixed-trigonometric-polynomial moment)計算とMATLABでの確認
Zennの「matlab」のフィード
はじめに 確率モーメントベースで状態の不確実性を伝播させるという手法が下記論文(Moment-Based Exact Uncertainty Propagation Through NOnlinear Stochastic Autonomous Systems)で紹介されており,手計算とモンテカルロ法での確認を行ったので紹介する. https://arxiv.org/abs/2101.12490 これにより,ある時刻でのロボットの状態(位置など)から数ステップ後の状態を不確実性も含めて扱うことができる. 論文においては,混合三角多項式のモーメント計算が示されている. 本記事では,ある...
2年前
Simulink+Arduino連携 Connected I/Oモードの検証
Zennの「matlab」のフィード
1.はじめに Simulink+Arduino連携のConnected I/Oモードは、コーディングなしでちょっとした実験ができてとても便利です。これを活用してBLDCモータの制御ができないか、という思いがあったのですが、私のつぶやきに対してSimulinkの中の人から以下のようなご指摘がありました。 「1ms以下のリアルタイム制御は実質不可能」ということで、諦めろという話になったわけですが、どのぐらい遅延が生じるのかせっかくなので一度検証してみることにしました。 Connected I/O(入力/出力モード)については以下の記事に詳しくまとめられています。 https://qii...
2年前
MATLAB Scriptでオブジェクト指向プログラミング
Zennの「matlab」のフィード
MATLAB Scriptでオブジェクト指向プログラミング書く時に よくある機能の搭載有無や書き方を簡単に確認したい時が多くあります。 この記事ではオブジェクト指向の記法を使った簡単なサンプルプログラムを書いておくことで、 忘れた時に参照しやすくしています。 基本的なオブジェクト指向プログラミング まず、MATLAB Scriptは同じ名前の関数オーバーロードをサポートしていません。 また、関数のデフォルト引き数はそれ自体ではサポートしていませんが、narggin等を使用することで同機能を搭載可能です。 下はclass_sample.mの内容です。 classdef class_sa...
2年前
MATLABで心電図を分析しよう Ep. 1
Zennの「matlab」のフィード
Introduction 私は心電図が好きです.心電図から得られるただの値が,自分の身体の活動を表現していると思うとわくわくします.ただそれだけです.この気持ちをこの記事を読んでいただいている方にも知ってほしいという思いでこの記事を書いています.私自身もこの道を極めているわけではないので,至らない部分があると思いますがその時はご指摘いただければありがたいです. Goal よくみる心電図波形をプロットする 心拍の検知 時間領域の解析で得られるパラメータの導出 To Be Determined 大まかな目標としてこれらを挙げますが,4以降は未定です.今回は1を取り上げます.2以降...
2年前
Simscapeによる熱回路シミュレーションの修行
Zennの「matlab」のフィード
Simscapeによる熱回路シミュレーションの修行成果をここにメモします。 誤りを見つけられた方はこっそり教えて頂けますとありがたいです。 題材1. 半導体パッケージの発熱 ROHMの資料に参考になりそうな熱回路があったので、これをそのままSimscapeでモデリングしました。 https://fscdn.rohm.com/jp/products/databook/applinote/discrete/sic/common/what_is_a_thermal_model_sic_an-j.pdf モデル化の結果はこんな感じ 周囲温度Ta=25℃、ジャンクション温度Tj=100℃...
2年前
MATLABでサクッとプラットフォームの判定をする
Zennの「matlab」のフィード
最近、MATLABをWindowsとLinuxで使う機会があり、どちらの環境でも動作するスクリプトを書くにはどうしたらいいのか調べたので、備忘録として残します。 スクリプトにはプラットフォーム固有の書き方が変わる箇所が含まれていることを前提とします。[1] 実行しているコンピュータの情報を取得する関数 MATLABには、computerという関数があります。 この関数の戻り値を文字列操作して、プラットフォームの判別を行うことができます。 % computer の戻り値を操作したプラットフォーム判定(例) str = computer(); if contains(str,'WIN')...
2年前
MATRABのサンプル画像の取得の仕方
Zennの「matlab」のフィード
MATLABのカメラマンとかのサンプル画像がない 実験で使う画像がサンプルだったけど,見当たらない. 公式の英語のQAでは以下のディレクトリにあるって書いてあった. C:\Program Files\MATLAB\R2013b\toolbox\images\imdemos でもなかった. Image Processing Tool をインストールする. これも公式の英語QAにあった, Image Processing Toolは MATLABを開いて,アプリのタブを選択して更にアプリを取得する で追加のアプリをダウロードできるみたい. スクショを置いておきたい. その検索窓でIm...
3年前
【MATLAB】何が起こっているか分からないが致命的っぽいエラーの処置方法
Zennの「matlab」のフィード
何かがおかしい・・そんな時には 意味の分からないエラーが・・ プロット表示がなんか変 or 表示されない・・ 根本原因はどうでもいいから何とかしてくれ。もう再インストールしてやる! エラー文もよくわからんし、どう考えても自分の書いた部分が原因じゃないだろう・・。 MATLAB 使っていると、たまに? こんなことありますよね。 そんな時、怒りに任せて再インストールをしちゃう前に気軽に試せる2つの関数とその背景を紹介します。 パス初期化:restoredefaultpath 設定ファイル初期化:prefdir restoredefaultpath % パスの初期化 savep...
3年前
MATLABのTips 伝達関数行列の効率的なコーディング
Zennの「matlab」のフィード
伝達関数行列とは 今回は伝達関数行列のコーディングについて紹介したいと思います。 ちなみに伝達関数行列は、各周波数における伝達関数を入力×応答数分に配置した行列です。 音場制御や伝達経路解析(TPA)などで良く使用します。 ここで、伝達関数行列Gは入力ベクトルqと応答ベクトルpとの間に下式の関係があります。 p(ω) = G(ω)q(ω) 伝達関数行列の要素は下のようになります。 ※要素内も角周波数ωの関数となりますが、見にくくなるので省略しています。 ここでもし学生さんに「G11(ω)などは何なのでしょうか?」と問われたら、「伝達関数です。」という回答になってしまいます。 こ...
4年前
MATLABのTips maxやminの裏ワザ
Zennの「matlab」のフィード
本日はmaxとminの隠れた機能について説明します。 使いこなせればコードを非常に短く書くことができます。 ここでmax関数のおさらいです。 MATLABのhelp機能でmax関数を検索すると、下記説明が出力されます。 >> help max MAX 最大要素 X がベクトルの場合、MAX(X) は、X の最大要素を出力します。X が行列の場合、 MAX(X) は、各列の最大要素を含む行ベクトルを出力します。X がN次元配列の 場合、MAX(X) は最初に 1 でない次元について最大要素を出力します。 [Y,I] = MAX(X) は、ベクト...
4年前
MATLABで学ぶ信号処理 窓関数処理後の振幅とパワーについて
Zennの「matlab」のフィード
数式や画像などが正しく表記できない場合は、下記リンクを参照いただけると幸いです。 https://mech-eng-uni.com/matlabで学ぶ信号処理 -窓関数処理後の振幅とパワー/ 前回の記事でfftと窓関数の関係についてざっくりと説明しました。本記事では、窓処理がfft結果の振幅やパワースペクトルに及ぼす影響について説明します。また、振幅とパワースペクトルの関係について詳しく説明します。 https://mech-eng-uni.com/matlabで学ぶ信号処理 -窓関数について/ はじめ 上記記事の繰り返しになりましたが、窓関数(ハニング窓)を使うと、信号は下図...
4年前
MATLABで学ぶ信号処理 窓関数について
Zennの「matlab」のフィード
数式や画像などが正しく表記できない場合は、下記リンクを参照いただけると幸いです。 https://mech-eng-uni.com/matlabで学ぶ信号処理 -窓関数について/ fttと窓関数の関係についてざっくりと説明します。 ざっくりなので、専門家には指摘したい箇所があると思いますが、実用上は下記の理解で困らないと思うので、大目に見てください。 はじめに fftでは、信号が周期的であることを仮定し(その信号がずっと続くことを仮定)、その信号の周波数を分析します。長時間の信号を周波数分析することは、分析コスト(処理時間や負荷)が大きいので、信号を短く切り出します。 短く切り出...
4年前
MATLABで学ぶ信号処理 高速フーリエ変換(fast Fourier transform:fft)について 1
Zennの「matlab」のフィード
数式や画像などが正しく表記できない場合は、下記リンクを参照いただけると幸いです。 https://mech-eng-uni.com/matlabで学ぶ信号処理 -高速フーリエ変換(fast-fourier-transformfft)/ はじめに MATLABにはfft関数が用意されていて、簡単に誰でもfftができます。 しかし、振動・騒音関係でMATLABのfftを使用する場合は注意が必要です。 どういうことかというと、騒音器や振動測定器で測定した時間波形をMATLABやPythonなどのプログラムで単純にfftをすると、騒音器や振動測定器で測定した”周波数分析結果”と一致しませ...
4年前