MATLAB

matlabで等角写像

function conformal_map clear all;close all; xi_x = -2:0.1:2; xi_y = -2:0.1:2; [X,Y] = meshgrid(xi_x,xi_y); Xi = X + i*Y; R=1; alpha_deg = 20; alpha=alpha_deg/180*pi; Z = Xi + R^2./Xi*exp(-i*2*alpha); axis equal; xlim([-2 2]); ylim([-2 2]);…

2次元弾性問題を有限要素法で解く

うまくいってないっぽい function simple_elastic clear all; close all; format compact; global np, global ne; global nf; global nb; global nodes; global elems; global loads; global bounds; global material; params_simple; load simpledata; np =…

2次元トラスの問題を有限要素法で解く

planer_truss.m function planer_truss clear all; close all; init_params2(); global np;global ne;global nb;global nf; global nodes;global elems; global cnsts;global loads; % load exp1; load exp2; draw_truss(); axis equal; eks = {}; K = zeros…

3次元トラスの問題を有限要素法で解く

solid_truss.m function solid_truss close all; clear all; init_params2(); format shortG; global nodes; global elems; global bounds; global loads; load model_data2; np = size(nodes,1); ne = size(elems,1); nb = size(bounds,1); nf = size(loads…

不変零点(invariant zero)と最適フィードフォワード

倒立振子運動方程式 a=9.24e+00; L1=7.00e-02; c2=1.12e-05; m2=3.95e-03; g=9.81e+00; l2=7.20e-02; J2=8.84e-06; a33=-a; a42=m2*g*l2/J2; a43=m2*L1*l2*a/J2; a44=-c2/J2; A = [0 0 1 0 0 0 0 1 0 0 a33 0 0 a42 a43 a44]; b=2.43e+00; B=[0 0 b -m2*L1*l…

混合ベルヌーイ問題をEMアルゴリズムで解く

尤度関数 シグマ(和)とパイ(積)が混在しているので対数尤度関数の偏微分が容易に計算できない。 (パイだけだとログを取るとシグマに転換するので簡単に計算できる)https://github.com/shohei/mnistうまく尤度が計算できてないやりかけのコード functio…

零点と過渡特性

零点がz>0のとき、逆ブレを生じる: 不安定零点という 零点が極に近いとき、極零相殺(ダイポールの極と相殺する)で零点の影響は現れない ゼロ点が-1

MNISTのデータを読み込む

http://nnet.dogrow.net?p=31 fid=fopen('train-images-idx3-ubyte','r','b') magic_number = fread(fid,1,'int32') number_of_items = fread(fid, 1, 'int32') number_of_rows = fread(fid,1,'int32') number_of_columns = fread(fid,1,'int32') img = frea…

バスから行列を生成する

Vector Concatenateを使う方法はまずいと思っていたが、Bus Creator+Reshapeでできそう。

SimulinkでVector Concatenateを使って定数から行列を作る

MATLABでカルマンフィルタを使う

http://jp.mathworks.com/help/control/ug/kalman-filtering.html

定常カルマンフィルタ

function lineartest clear all; close all; A=1; b=1; c=1; Q=1; R=2; N=300; v=randn(N,1)*sqrtm(Q); w=randn(N,1)*sqrtm(R); x=zeros(N,1); y=zeros(N,1); y(1)=c'*x(1,:)+w(1); for k=2:N x(k,:)=A*x(k-1,:)'+b*v(k-1); y(k)=c'*x(k,:)'+w(k); end xhat …

SimulinkでContnuousとDiscreteの違い

http://jp.mathworks.com/matlabcentral/answers/36663-what-are-continuous-and-discrete-states-in-simulink

最適サーボシステム

clear all; format compact; A = [ 0 1 0 0 -4 -2 4 2 0 0 0 1 2 1 -2 -1 ]; B = [0 2 0 0]'; C = [ 0 0 1 0]; x0 = [0 0 0.25 0]'; Ae = [ A zeros(4,1) -C zeros(1,1)]; Be = [B;zeros(1,1)]; Q11 = 100; Q22 = 600; Qe = [C'*Q11*C zeros(4,1) zeros(1,4)…

同次元状態オブザーバを使って出力フィードバック形式のコントローラを組む

C=[0 0 1 0]よりx3のみ観測しているので、誤差は(初期を除いて)生じていない。 M1=0.5; M2=1; k = 2; mu=1; A = [0 1 0 0 -k/M1 -mu/M1 k/M1 mu/M1 0 0 0 1 k/M2 mu/M2 -k/M2 -mu/M2 ]; B = [0 1/M1 0 0]; C = [0 0 1 0]; p = [-2+2j -2-2j -2+j -2-j]; K …

多入力他出力(MIMO)システムの時間応答

clear all; close all; A=[ 0 1 0 0 -2 -2 1 2 0 0 0 1 2 2 -2 -8 ]; B = [ 0 0 2 -2 0 0 -2 4 ]; C = [ 1 0 0 0 0 0 1 0 ]; D = [ 0 0 0 0 ]; sys = ss(A,B,C,D); t= 0:0.01:20; x0 = [1 0 -1 0]'; y=initial(sys,x0,t); y1=y(:,1); y2=y(:,2); subplot(3,1…

matlabで遷移行列を利用して零入力応答を求める

clear all; close all; A=[ 0 1 -10 -2 ]; c=[1 0]; x0 = [1 0]'; ts = 0:0.1:5; for idx=1:length(ts) t=ts(idx); y(idx) = c*expm(A*t)*x0; end plot(ts,y);

ステップ応答、零入力応答、時間応答の関係

零入力応答=自由応答=初期条件応答 -> initial() ステップ応答=零状態応答 -> step() 時間応答=ステップ応答+零入力応答 -> lsim() clear all; close all; drawResponse(1); drawResponse(2); drawResponse(3); function drawResponse(number) aa=[-11 -2 0…

状態空間モデルの初期条件応答(任意の初期値における零入力応答=自由応答)

http://jp.mathworks.com/help/control/ref/initial.html a = [-0.5572, -0.7814; 0.7814, 0]; c = [1.9691 6.4493]; x0 = [1 ; 0]; sys = ss(a,[],c,[]); initial(sys,x0)

MATLABで関数ワークスペースからベースワークスペースの変数を呼び出す

http://jp.mathworks.com/matlabcentral/newsreader/view_thread/251927 ベースワークスペースにいるvarを呼び出したいとき function hoge v = evalin('base','var') end

MATLABで直流モーター速度制御系における時定数とゲインのパラメータ同定

A/D変換がボトルネックになっているのか、RoTHシミュレーションのタイムステップが効いてくるっぽい Arduino Mega2560で、timestep=1/30[sec]でうまくいった。同定結果 ==result== Time step = 0.050000 K = 0.665923 T = 3.466667 u_offset = 1.269975 ==re…

MatlabでSimulinkのシミュレート終了を待機する

http://stackoverflow.com/questions/23918278/block-a-matlab-script-while-simulink-runs あんまりいい方法は無くて、get_parmでシミュレーションのステータスを取得するのが現状 set_param(sys,'SimulationCommand','start'); while ~strcmp(get_param(sy…

SimulinkでArduinoのA/D変換値をリアルタイムキャプチャする

http://www.element14.com/community/thread/32223/l/arduino-uno-serial-comms-to-simulink?displayFullThread=true2つのSimulinkブロック間でシリアル値を渡すらしい 1. Enable External Mode in Simulink. Note: Arduino Uno is not supported for exter…

SimulinkでArduino RoTHを使う

RoTH = Run on Target Hardware手順は 0. Prepare 1. Build(Deploy) 2. Simulate(Run)例(Scopeは不要だがつけてみた) SimulinkとArduinoの連携も最新のやり方は本家を参考にすると良い。 1. Prepare for Run 注意点:明示的にシリアルポートを指定する(/de…

ArduinoとMATLABの連携(MATLAB 2015a)

Target Hardwareのライブラリの追加 $ supportPackageInstallerMATLABおよびSimulinkライブラリを追加する次の書籍を参考にしたが、やり方が異なるので注意。 ちなみにAPIもかなり変わっているので、本家のサイトかヘルプ画面からArduinoチュートリアルを見…

matlabのPatchのメモ

MatlabのControl System Toolbox

http://www.mathworks.co.jp/jp/help/control/index.html