#author("2024-05-11T22:22:24+09:00","default:hirata","hirata")
#author("2024-05-21T01:01:56+09:00","default:hirata","hirata")
*MATLAB Tips [#x6881ab0]

Contents:

#contents
**モデル集合を定義したい [#s068457c]
 sys = stack(arraydim,sys1,sys2,...)

**figureがドックに入るようにしたい。(2024-05-11) [#fc336442]
 set(0,'DefaultFigureWindowStyle','docked'); % dockに入るようにする場合
 set(0,'DefaultFigureWindowStyle','normal'); % 元に戻す場合

**docコマンドで表示されるヘルプをローカルを参照するようにしたい。(2020-03-23) [#sc006469]
+[ホーム] タブの [環境] セクションで [設定] をクリック。[MATLAB] 、[ヘルプ] を選択。
+[ドキュメンテーションの場所]で[ローカル]を選択

**最近のMATLAB(R2014b以降?)において,EPSで保存した図のBounding Boxが正しくないため,LaTeXで図がずれる。(2018-08-26) [#ya66af76]
 set(gcf,'paperpositionmode','auto')
 print(gcf,'-depsc2','-loose','myfigure.eps'); 

**bodeでlegendを描くと位相側に出力されてしまう。これを,ゲイン線図側にしたい。また,縦軸の範囲も変えたい。(2017-08-17) [#vb64f7d8]
 h = findall(gcf,'type','axes');
 legend(h(3),'line1','line2')
 set(h(3),'YLim',[-50 50]) % Gain
 set(h(2),'YLim',[-90 0])  % Phase

**bodeでプロットした図のフォントサイズをプロット後に変更したい。(2017-08-07) [#pb0cd6ec]
 h = findobj(gcf,'type','axes');
 set(h, 'FontSize',12);
 h = findobj(gcf,'type','text');
 set(h, 'FontSize',12);

**MATLABの起動に時間がかかる [#hbb9d32b]
MATLABの設定をクリアすると改善されることがある。具体的には,プリファレンスフォルダを R2012a_old などとリネームしてからMATLABを起動する。プリファレンスフォルダは
 >> prefdir
で調べられる。

**MATLABのfigureのフォントとサイズのデフォルト値(9pt, MS UI Gothic)を変更したい.(2010-08-30) [#n5900199]
startup.m に以下を追加.
 set(0,'defaultAxesFontSize',14)
 set(0,'defaultTextFontSize',14)
 set(0,'defaultAxesFontName','Helvetica')
 set(0,'defaultTextFontName','Helvetica')
なお,現在のデフォルト値は下記のコマンドで調べられる.
 get(0,'Default')
**MATLABのfigureが,画面の中央付近に出てうっとうしい。(2009-04-17) [#t3c010cb]
startup.m に以下を追加
 % figure position
 % 568 x 496
 screen = get(0,'ScreenSize');
 width = screen(3); height = screen(4);
 mwwidth = 560; mwheight = 420;
 left = 5;
 bottom = height - mwheight - 70;
 rect = [ left bottom mwwidth mwheight ];
 set(0,'defaultfigureposition',rect);
**図のフォントサイズ,線幅をあとからまとめて変更したい(2008-05-02) [#x1cbda52]

&ref(fmtfig.m);
-Ver.1.1, 2008-06-13 LineWidthの変更が無効になっていたので処理を追加


 >> fmtfig(fontsize,linewidth,'Times')

の様に使用します。引数は省略できます。

この m-file では,gcfのプロパティをまとめて変更します。ただし,Control System Toolboxの bode などでプロットした図については,正常に動作しません。bodeなどは,ctrlpref でフォントサイズなどを設定します。
**凡例のフォントサイズを後から変更する(2008-01-08) [#j6346621]
 >> set(legend,'fontsize',14)

**表示されているグラフの線の太さをまとめて変更する(2008-01-08) [#jb155e23]

 function chgstyle(h)
 % chgstyle.m
 ch = get(h,'children');
 n   = length(ch);
 for i=1:n
     set(ch(i),'linewidth',2)
 end

上記関数を chgstyle.m という名前で保存し以下を実行する

 >> chgstyle(gca)

**MATLABで作成したEPSファイルを直接編集して,グラフの線の色を変更する(2007-05-21) [#e06db90e]

EPSファイルの中にある色の定義を書き換えます。

 /c0 { 0 0 0 sr} bdef
 /c1 { 1 1 1 sr} bdef
 /c2 { 1 0 0 sr} bdef
 /c3 { 0 1 0 sr} bdef
 /c4 { 0 0 1 sr} bdef
 /c5 { 1 1 0 sr} bdef
 /c6 { 1 0 1 sr} bdef
 /c7 { 0 1 1 sr} bdef
**MATLABで作成したEPSファイルに含まれる日本語フォントを削除する(2007-05-21) [#f75384d9]

MATLABのグラフをEPSファイルに変換すると,xlabel, ylabel に半角英数字しか使用していないのにもかかわらず日本語フォントが含まれます。国際会議に論文をPDFファイルで投稿する際,最近PDFファイルのチェックが厳しく,EPSファイルに日本語フォントが含まれていると,投稿が拒否されます。そこで,EPSファイルに含まれる日本語フォント

 GothicBBB-Medium-83pv-RKSJ-H

を強制的に Helvetica に書き換える perl スクリプト
&ref(convmlfig.pl);を作成しました。
DOS窓で
 perl convmlfig.pl
を実行すると,カレントディレクトリにある eps ファイルを書き換えて,その一つ上のディレクトリにコピーします。なお,MATLABのバージョンによってはうまく動作しない可能性があります。必ずオリジナルのファイルのバックアップをとってください。
**英語モードにする(2006-04-10) [#v76f3fb0]
 set(0,'lang','english')


**bodeコマンドで出力されるボード線図のゲイン線図のaxisを変更する(2006-03-15) [#p43a8c88]

 figure(1)
 bode(G),grid
 ch = get(figure(1),'children')
 set(ch(2),'YLim',[-50 50],'XLim',[1e1 1e4])
**図をプロットした後にフォントを変更する(2006-01-12) [#j7c95117]
 fs = 14;
 fntname = 'Times';
 set(findobj('type','axes'),'fontsize',fs,'fontname',fntname);
 set(get(gca,'Xlabel'),'fontsize',fs,'fontname',fntname);
 set(get(gca,'Ylabel'),'fontsize',fs,'fontname',fntname);
**hold on, hold off を行うと図の枠が消える [#u0799c15]
 >> set(gca,'Box','on')
**フォントサイズを変更したい [#jbe06191]
 >> set(gca,'fontsize',12);


**Control Toolboxのbodeコマンドで生成されるボード線図の周波数軸をrad/secからHzに変更したい。 [#mcabc6b7]

ltiviewを起動し,"File" -> "Toolbox Preference"から rad/sec か Hz を選ぶ。

または,コマンドレベルで以下のようにする。

 >> f = logspace(-1,1,100);
 >> w = 2*pi*f;
 >> [mag,phase] = bode(sysc,w);
 >> semilogx(f,20*log10(reshape(mag,[100 1]));

参考:
-http://www.mathworks.com/support/solutions/data/1-16AFJ.html?solution=1-16AFJ
-http://www.mathworks.com/support/solutions/data/1-16FED.html?solution=1-16FED

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS