俺言語。

自分にしか理解できない言語で書かれた備忘録

Matlab

【MATLAB, C++, Python】C++(.dll)でMATLABエンジンを呼び出す際の落とし穴

落とし穴1 MATLAB R2017b以前と以降とでC++からMATLABを呼び出す方法が変わった模様。 engOpen(NULL) で呼び出す方法はR2017b以前まで。 C からの MATLAB の呼び出し - MATLAB & Simulink - MathWorks 日本 同方法で MATLAB R2020を呼び出すとMATLABのウィン…

【Python】Python用Matlabエンジンのインストール

PythonからMatlabで作成したmファイル等を読み出したい場合に使用。 使用しているMatlabのバージョンによって使用可能なPythonのバージョンに制約があるので要注意。Matlab2016a -> Python 3.4, 3.3, 2.7 普段はPython3.7を使用してるためvirtualenvを使用し…

【MATLAB】起動時にカレントディレクトリを自動で変更

任意のカレントディレクトリに自動で変更するには起動時に自動実行されるstartup.mを元のカレントディレクトリに作成し,そこにcd c:\(任意のアドレス)と記載しておく。するとMATLAB起動時に自動的にスクリプトが実行されカレントディレクトリが変更される。 …

【MATLAB】設定ファイルの保存場所

PC入れ替えなどで前の環境(文字色,背景色など)を新しい環境に引き継ぎたい場合,下記に設定ファイルがあるのでそれを新しい環境へコピーする。 Location: C:\Users\(user_name)\AppData\Roaming\MathWorks\MATLAB\(version) File: matlab.prfhttps://jp.math…

【MATLAB,C++,Python】C++でMATLABエンジンを呼び出す

ようやく動いたのでメモ。 目標はC++のDLLをPythonのctypesで読み込んでPythonからMATLABエンジンの使用。 (Matlabが2016以降であればPythonからコントロール可能なのでこんなめんどくさいのは不要) ポイント1.64bit環境(MATLABも)なのでプラットフォーム…

【Python】matファイル内のstructの読み込み方法

MATLABのmatファイルはScipy.ioのloadmatで読み込みできるが,読み込んだデータがMATLABの構造体だった場合 読み込み方法がいまいちよくわからなかったのでメモ。 import scipy.io matdata = scipy.io.loadmat("hogehoge.mat") 構造体が kozotai.aa = 1 .bb …

【matlab】複数の出力変数を受ける方法

いまいち用途がわからないけどそのうち使えそうなのでメモ。 [code language="text"] r = rand(4, 3); [/code] r = 0.6381 0.1359 0.5193 0.8755 0.9457 0.2041 0.5850 0.5873 0.3957 0.7167 0.0371 0.1791 f = cell(1, 2);[f{:}] = max(r);f{:} ans = 0.875…

【matlab】構造体のメンバを一括して出力する方法

ベクトルではなくリニアインデックス順に順次に出力されてくる関数の対応がよくわからなかったのでメモ。 <題材>>>a = dir(matlabroot); a = 22x1 struct array with fields: name date bytes isdir datenum--------------------------・単一のフィールドを…

【Matlab】複数台のRaspberryPIによる分散処理の可能性

多自由度の運動方程式を数値解法で解く際,少しでも計算時間を短くしたかったため手軽な分散処理を調査。 f = 4/(1+x^2)の[0 1]区間 積分が円周率の近似になるらしい方法でMatlab(PC)とRaspberryPi2台を比較(RaspberryPIはネット上の結果を参照 http://netbu…

【MATLAB】よく使う凡例の設定方法

毎回よく使う割によく忘れるので覚書。 ①DisplayNameを使う方法 LineプロパティのDisplayNameを使ってセットする方法 a(:,1)=sin(t); a(:,2)=cos(t); h = plot(a); set(h,{'DisplayName'},{'Sine','Cosine'}') これだと最大値にマークをプロットした場合など…

【MATLAB】セル配列から要素を取り出す際の2つの方法とその違い

セル配列にインデックスを指定し要素を取り出すには2種類の方法がある { }をつかってインデックスを指定する場合 → 戻り値は文字列(char) cell{ i,j } = 文字列( )をつかってインデックスを指定する場合 → 戻り値はセル配列cell( i,j ) = セル配列

【MATLAB】UIからコールバックさせる方法

スライダやチェックボックスの変化を感知してコールバックさせる方法 ※コールバック時に呼び出す処理を関数にする必要があるため 本体はm関数にしないといけない。 UIの設置スライダの場合: h = uicontrol(グラフのハンドル , 'Style' , 'slider',... 'Min',…

【MATLAB】ベクトルを積分

関数でなく,ベクトルを積分する方法 -----------------------------------cumtrapz(x,y) x:積分区間,yと同じ長さy:積分したいデータ----------------------------------- ex)500Hzでロギングした加速度波形indataを速度へ変換 time = 0:1/500:(length(i…

加速度から変位を求める際のフィルタ 気象庁の場合

気象庁の推奨方法 -------------------速度波形はカットオフ5秒の3次のバターワースフィルター、変位波形は機械式1倍強震計の特性を再現するフィルターを用いて積分を行っています。-------------------とのこと。 http://www.data.jma.go.jp/svd/eqev/dat…

メモリ3Gスイッチ

以下matlabのドキュメントから引用 ----------------------------- Microsoft Windows XP システムでは、 システムの boot.ini ファイルで適切なスイッチを設定すると、 プロセスに既定の 2 GB ではなく、3 GB を割り当てることができます。 MathWorks® では…

グラフのタイトルや判例の文字が小文字(下付き)になってしまう対策

それぞれの文字のプロパティ内にある’Interpreter’を’none’に設定(デフォルトは’tex’) ex: set(gco,'Interpreter','none');

フィルタ設計方法・手順

フィルタのパラメータをbuttord関数で算出buttord バタワース フィルターの次数とカットオフ周波数 ページ内をすべて展開する 構文 [n,Wn]=buttord(Wp,Ws,Rp,Rs) [n,Wn]=buttord(Wp,Ws,Rp,Rs,'s') 説明 buttord では、一連のフィルター設計仕様を満たすため…