MATLAB
MATLABで配列xとyをプロットする時はplot(x,y)ですよね。plotのオプションを指定する時は、 Name,Value の引数ペアをコンマ区切りで加えていきます。例えば、点線で線の太さを2ポイントにしたければ、plot(x, y, ’LineStyle', ':', 'LineWidth', 2)です。 pl…
meshcを使うと、3次元の分布とともにコンター図を描ける。 デフォルトでは、コンター図はzlimの最小値に描くが、任意の場所に変更するには次のようにする m = meshc(peaks); m(2).ContourZLevel = 10; % z=10の場所にコンター図を描く
plotやplot3dした時のグラフの外枠を消す方法 set(gca,'Visible','off')
axesコマンドを使って、透明なレイヤーを確保して、そのレイヤーにtextコマンドをつかって文字を書き込む。textコマンド(かつデフォルトの単位系)を使うときは、画面左下の座標が(0,0)で画面右上の座標が(1,1)となる。 例1 x=linspace(0,2*pi,2000); y=ex…
次のファイルをダウンロードする。 Envelope 1.1 https://jp.mathworks.com/matlabcentral/fileexchange/3142-envelope1-1 (https://jp.mathworks.com/matlabcentral/fileexchange/3142-envelope1-1) 実行例 x=linspace(0,2*pi,2000); y=exp(-x).*sin(20*x);…
moveguiを利用する f=figure(); movegui(f, 'center');
hoge.mというファイルが依存しているファイルの一覧を得るには以下のようにする。 >> matlab.codetools.requiredFilesAndProducts('hoge.m')' 最後の「'」が肝ですから
a, b, c, dがそれぞれ列ベクトルで、4次元の斜交基底を成しているとする。直交基底はqr関数を用いれば簡単に求められる。 >> base = [a, b, c, d]; >> [new_base, ~] = qr(base); new_baseの各列が直交基底を成す。n次元に応用可能。やっていることはGram Sc…
例えばオシロで測定したデータをti, Vi (i=1,2,...)として、それをplot(t,V)とすると下図のような波形だとする。 このような、複数の電圧パルスの各立上がり時刻を効率的に求めるには、以下の様にすると便利。 >> % t ... time of signal (1xN array) >> % V…
MATLABのデフォルトはdouble型。例えば >> a=2; class(2) ans = double singleや整数にしたい場合は >> a = single(2); >> a = int32(2); % 32ビット、4バイト、FortranでいうINTEGER(kind=4) となどとキャストして宣言する。 ちなみに、singleで計算してい…
2012/02/21 20:00:13みたいな書式は人間にとっては良いけど、パソコンで扱う(ソートするとかプロットするとか)には不便なのでタイムスタンプにするのが良い。2012/02/21 20:00:13をタイムスタンプに変換するには次のようにする t1 = '2012/02/21 20:00:13'…
CATIAのファイルを読み込ませたかったが、Simulink 3D Animationというのを購入するしかないようだ。FileExchangeにはCADを読み込むコードがいくつかあり、IGES Toolboxを使うこととした。 IGES Toolboxは以下のリンクよりダウンロード可能 http://www.mathw…
MATLABを起動してuserpathと打つとユーザー割り当ての検索パスが表示される。MATLABは起動時にそのディレクトリにあるstartup.mを1回実行するので、パスの設定などはそこに書いておく。 R2012bの場合、Linuxでは >> userpath ans = /home/username/Documents…
Mという4次元配列から最大値の場所を見つける例 M = randn(10,10,10,10); [~,I]=max(M(:)); [I1,I2,I3,I4] = ind2sub(size(M),I) 最大値はM(I1, I2, I3, I4)となる。
interp2は遅いのでgriddedInterpolant()を使う。補間されるデータがNDGRIDで生成された格子を基にしているのか、MESHGRIDで生成され格子を基にしているかで使い方が違うので注意。 補間されるデータがNDGRIDで生成されている場合 [X1, X2] = ndgrid(1:10,1:1…
フィッティングしたい関数myfuncがスカラー変数xとNp個のパラメータを受け取り、スカラーyを返すような関数とする。この時、数学の定義としてはヤコビアンは1行Np列である。しかし、matlabのプログラミングとしてはxに配列を投げてまとめて処理することが多…
フォント、フォントサイズ、図の大きさを指定する方法。 以下の例ではフォントサイズを10 ptにし、図の幅を8 cmにしている。ここで8 cmとしたのは、ジャーナルがa4用紙2段組みで、左右のマージンが大きめに2.5cmずつとし、簡単のため左右の段の間のスペース…
>> [Y, X] = meshgrid(-1:0.1:1); >> plot(X, Y, 'k-', X', Y', 'k-')
基本は、drawnowを使ってイベントキューをフラッシュする。ただ、下記に示すように3つの方法が考えられる。方法1が速いしシンプルだが、凝ったプロットをしたいときに上手くいかない事もあるので、refreshdataも用いた方法2及び方法3も紹介する。 方法1…
MATLAB Plot Galleryという便利なサイトがあります http://www.mathworks.com/discovery/gallery.html 下の図のようにいろいろなサンプルが公開されています。
チューブプロットとmArrow3というのを組み合わせると下のような図が描ける。 チューブプロット(tubeplot) チューブプロットできるコードはFileExchangeにある: http://www.mathworks.com/matlabcentral/fileexchange/5562-tubeplot このFileExchangeのtubep…
遅い部分を特定する 時間はticとtocを組み合わせて計る。tic/tocのヘルプに便利な例がある。 プロファイラーを使って、コードの遅い部分を特定する。 ベクトル計算の利用 ベクトル計算とは、簡単に行ってしまうとfor文を使わないやり方。例えば、meshgridで…
図の目盛の値を文字列にしたいとき 例えば、横軸をA, B, C, D, Eとしたい時は、以下のようにする。 x = 1:0.1:5; y = rand(size(x)); xtick = 1:5; xticklabel = {'A' 'B' 'C' 'D' 'E'}; plot(x, y, 'b') set(gca, 'XTick', xtick, 'XTickLabel', xticklabel…
図をsubplotなどで複数表示していて、一つのグラフで拡大表示などした時に他のグラフの表示領域を自動で変更させたい時がある。そんな時はlinkaxesを使う。例えば、2つのグラフがあって、x軸について表示範囲を同期したいときは以下の様にする x=linspace(0,…
PDE Toolboxのinitmesh()を使うと三角形1次要素の分割が簡単にできる。 >> [p,e,t] = initmesh(g); このときの戻り値の配列のサイズはそれぞれ次のように表せる p ... 2xNn e ... 7xNe t ... 2xNn ただし Nn ... 総ノード数 Ne ... 境界上のエッジ数(ノード…
strcatという命令文も用意されているが、以下の方が楽。 >> ['ab', 'cd'] ans = abcd
yes or noを要求する例 prompt = 'Do you want to save? Y/N [Y]: '; str = input(prompt,'s'); if isempty(str) str = 'Y'; else str = upper(str); end 文字列の入力を要求する例 prompt = 'Filename: '; str = input(prompt,'s'); 数値の入力を要求する例…
次の二つのファイルをダウンロードして、パスの通ったところに保存しておく。 samexaxis (nice subplots with same x axis) Parse function arguments 使い方は次の通り subplot(3,1,1); plot(randn(100,1),randn(100,1),'x'); ylabel('QF') subplot(3,1,2);…