matlab

matlab 警告: 名前が存在しないか、ディレクトリではありません

Windows10でDynareをインストールしたあとに「matlab 警告: 名前が存在しないか、ディレクトリではありません」という警告がでる問題の解決方法。 cd C:\dynare\4.5.7\contrib\ms-sbvar\TZcode\MatlabFiles\ edit startup.m ms-sbvarを使わない場合は、以下…

シンボリック関数を関数ハンドルに直して、arrayfunを適用する

arrayfunの使い方 - ハリ・セルダンになりたくて(はてダから移行中) と Matlabのシンボリック式を無名関数(関数ハンドル)に変換する関数 - ハリ・セルダンになりたくて(はてダから移行中) の合わせ技。 sf(x,y)というシンボリック関数があった場合、そ…

ある数字の繰り返しである行列を作成するのに効率的方法は?

たとえば、7が単に並んだ列ベクトルをつくるとき、Matlabで一番効率的な方法はなにか? tic; repmat(7, 1000000,1); toc;経過時間は 0.006551 秒です。tic; ones(1000000,1) * 7; toc;経過時間は 0.008067 秒です。 repmatの方が微妙に早い?のか?

arrayfunの使い方

Matlabに詳しい人には当たり前の話だと思うがarrayfunの使い方を自分用にメモ(Rではapply系の関数に該当するのがarrayfun、cellfun、bsxfunだと思えばいいのかな・・・): plusFun = @(x, y) x + 2 * yplusFun(1,2)arrayfun(plusFun, [1 2], [3 4])arrayfu…

Symbolic mathで微分演算子っぽいものを作る

Symbolic mathで微分演算子っぽいものを作ることができる。なんの役に立つか不明だが、面白い機能なので覚書。 [問題の定式化] 2回微分可能な関数について以下の簡単な常微分方程式を考える。 微分演算子を以下のように定義する。 微分演算子を使えば、常微…

Symbolic mathではシンボリック関数の配列が作成できる。微分もできる。

使い方次第だと思うが、面白い機能なので覚書。 シンボリック関数はsymfunで作ることができる(フォーマルなやり方)。簡易なやり方としてsym f(x,y)のようにすることもできる(xxとyyは自動生成される)。 syms phi1(xx) phi2(xx); phi1(xx) = xx; phi2(xx)…

シンボリック式・シンボリック関数はstringで文字列に変換できる

何に役立つのか分からないが、面白い機能なので覚書(この機能はMatlabドキュメントに載っていないようなので)。 syms xx yy; % シンボリック式はstringで文字列に変換できるstring(xx + yy) % シンボリック関数もstringで文字列に変換できるtestFun = @(xx…

Matlabのシンボリック式を無名関数(関数ハンドル)に変換する関数

Matlabのsymbolic math toolboxを使わない人にとってはどうでもいい話題ですが、シンボリック式を最適化しようとして少し困ったので、覚書。 Matlabのシンボリック式またはシンボリック関数を無名関数(関数ハンドル)に変換する関数が存在する。使い方はこ…

Miranda-Fackler (2002) p. 132のテンソル積による計算結果がMatlabのkronの結果と同一であることの確認。

% Miranda-Fackler (2002) p. 132のテンル積による計算結果がMatlabのkronの結果と同一であることの確認。 syms x1 x2; aa = [ 1, x1, x1^2] bb = [ 1, x2] kron(bb, aa) 注:ベクトルの場合、テンソル積とクロネッカー積の結果は同一となる(だったはず)。…

配列の1列目をインデックスとしてソートする

Matlabで配列の1列目をインデックスとしてソート(並べ替え)するたとえば A = [2 5 8 ; 3 4 7 ; 1 6 9] という配列の1列目(1列目の[2;3;1])をインデックスとして昇順でソートする。つまり以下のような配列Cを得たい。 C = [1 6 9 ; 2 5 8 ; 3 4 7] この場…