目次 >> MATLAB
ここではMATLABの使い方について述べる。
PaperOrientationとPaperPositionで指定する。
レターサイズの横置きに指定するには、
set(gcf,'PaperOrientation','landscape') set(gcf,'PaperPosition',[0,0,11,8.5])
となる。
PaperPositionの指定は、左,下.幅,高さ、の順で指定する。
デフォルトの単位はインチなので、PaperUnitsで単位を指定する。
set(gcf,'PaperUnits','centimeters')
とすると、単位がセンチメートルになる。
DPIすなわちpixels per inchを指定して印刷する。
例えば300DPIで出力するには、PaperUnitsをインチに指定して、ピクセル数で指定した幅および高さをDPIで割れば良い。
print時には-rオプションでDPIを指定する。
この例では、 横10800ピクセル、縦4800ピクセルで300DPIのJPEG画像example.jpgを出力している。
dpi=300; set(gcf, 'PaperUnits', 'inches', 'PaperPosition', [0 0 10800 4800]/dpi); print(gcf,'-djpeg',sprintf('-r%d',dpi), 'example.jpg');
軸を消すaxis offだと、ラベルまで消えてしまう。
単に目盛りを消すには、Ticklengthを0にしてしまえば良い。
set(gca,'Ticklength',[0 0])
x軸は、通常下につく。
上につけるには、
set(gca,'XAxisLocation','top')
とすればよい。
hoge.mというmファイルをMATLABを起動して実行するには、matlab起動時に-rオプションをつけて、その引数にmファイルを指定する。
matlab -r hoge
このとき、拡張子「.m」をつけてはいけない。
-nosplashを起動オプションにつける。
matlab -nosplash
format long g
で、より多くの桁数を表示することができる。
MATLABにはdo-while文は用意されていない。
do-whileを実現するには下記のようにする。
cond=true; while cond %何かいろいろとやる cond = (条件式); end
x軸が共通で左右にy軸を持つグラフはplotyy()で表示できる。
x=0:0.1:2; y1=sin(x); y2=exp(x); plotyy(x,y1,x,y2)
このとき、単にaxis()関数を使ったのでは、左側のグラフしか変更できない。そのようなときは下記のようにするとよい。
x=0:0.1:2; y1=sin(x); y2=exp(x); [ax h1 h2]=plotyy(x,y1,x,y2); axis(ax(1),[0 3 0 2]) axis(ax(2),[0 3 0 20])
C言語のstrcatと同様のstrcatという関数が用意されているが、[ ]で簡単に連結することができる。
> strcat('abc','def') ans = abcdef > ['abc' 'def'] ans = abcdef
Matlabには3つのレンダリング手法が用意されている。Painters、ZBuffer、OpenGLの3つである。
デフォルトでは、Paintersになっているが、表示するデータやデバイスよっては変更することによって表示品質や描画速度を大幅に上げることができる。
まず、ZBufferであるが、Paintersではきれいに表示、印刷およびエクスポートできない画像に適用すると、きれいに表示することができる。ただし、表示速度は一般に遅い。
OpenGLは3D表示において威力を発揮する。グラフィックカードがOpenGLをサポートしている場合は特にである。
手短にまとめると、2D画像の場合は、ZBufferを3D画像の場合はOpenGLを選択すると一般的によい結果が得られる。
レンダリング手法の切り替えは、
set(gcf, 'Renderer', 'opengl')
あるいは、
set(gcf, 'Renderer', 'zbuffer')
のように行う。
set(0,'DefaultFigureRenderer','opengl')
また、OpenGLに関する情報は、
opengl info
で得ることができる。
グラフを描画する際のフォントサイズや線の太さなどのデフォルト値をstartup.mというファイルに書き込むことによって自動的に設定することができる。
startup.mのファイルの位置は、R2006b以前であれば、MATLABのインストールフォルダの中のworkフォルダ、R2007a以降であればMy
Documentフォルダの中のmatlabフォルダである。
基本的には、
set(0, 'Defaultほげほげ', 設定値);
のような書式をとる。
set(0, 'DefaultAxesLineWidth', 5);
set(0, 'defaultAxesFontSize', 24);
set(0, 'defaultFigureColormap', jet(1024));
set(0, 'defaultAxesBox', 'off');
recycleコマンドを使って設定する。
recycle onでゴミ箱に捨てる動作が有効になる。実際の削除はdeleteコマンドを使う。
recycle on;
delete hoge.dat
hoge.datファイルがゴミ箱に移動される。
recycleコマンドを単独で使うと、現在の設定状況が表示される。
recycle
ans =
off
たとえばdatafile.datというファイルがあるとして、そこからプロットした画像をdatafile.pngとして保存したい場合がある。
その場合下記のようにすればよい。
%get filename [FileName,PathName,FilterIndex] = uigetfile('*.*'); fname=[PathName FileName]; %get elements [picpath,picfilename,ext] = fileparts(fname); %chnage ext picfname=[picpath '\' picfilename '.png']
MATLABには多数のツールボックスがあり、どのツールボックスがインストールされているのかわからなくなる時がある。
その場合verコマンドを使えばよい。
>> ver ----------------------------------------------------------------------------------------------------- MATLAB Version: 9.9.0.1592791 (R2020b) Update 5 MATLAB License Number: 123450 Operating System: Microsoft Windows 10 Pro Version 10.0 (Build 19043) Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode ----------------------------------------------------------------------------------------------------- MATLAB Version 9.9 (R2020b) Image Processing Toolbox Version 11.2 (R2020b) MATLAB Compiler Version 8.1 (R2020b) Parallel Computing Toolbox Version 7.3 (R2020b)
グラフを大量に作成した時、一つ一つ手動で保存するのは大変である。
そんなときは、saveas関数を使うと便利である。
書式は
saveas(h,'filename.ext') saveas(h,'filename','format')
である。hはハンドルであるので、現在表示しているグラフであれば、
saveas(gcf,'filename.jpg')
の様になる。最初の書式の場合、拡張子によって自動的にファイルのフォーマットが決まる。
2つめの書式では、フォーマット直接指定している。
最終更新日