初心者によるMATLABメモ

3次元形状やってんのになぜかMATLABを使わされることになった人のメモ。

 

検索エンジンから来た方は読みたい記事が表示されていない可能性があります。
その場合、左メニューのフォームでブログ内を検索すると見たい記事を見れると思います。
もしくは、カテゴリー名をクリックしていただくと各カテゴリーの記事のリストが見れます。

[スポンサー広告] スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリに付けられたタグ|

[基本] 起動時にデフォルトカラーなどを設定する (起動時にスクリプトを実行)

MATLABでは,MATLABのホームディレクトリにstartup.mファイルが存在すれば、起動する際にstartup.mが実行されます。
これを利用することで,毎回パスを追加しなおしたりする手間が省けます。
他にもデフォルトのフォントやサイズを変更したり,自分が最近メインで使っているワークディレクトリに移動したりすることができます。

一応サイバネットのサイトを見ると,startup.mを置く場所は下記だそうです。(実際にはパスが通ってればこれに限りませんが)
それとWindowsでMy Document以下にmatlab
[Windows版の場合]
ショートカットで指定しているMATLABの作業フォルダ。MATLABがデフォルトで自動的に作成する作業フォルダは、次の通りです。
* R2007a:各ユーザのMy Documentフォルダの下のMATLABフォルダ
* R2006b以前:MATLABインストールフォルダの下のworkフォルダ

[非Windows版の場合]
自動的にMATLABパスに追加される$HOME/matlabディレクトリ下、もしくは環境変数MATLABPATHで定義したディレクトリ。
参考:MATLAB:技術サポート:テクニカルFAQユーザ毎にMATLABの環境をカスタマイズ出来ますか?:サイバネットシステム

単純にmファイルを実行するだけなので,ある意味なんでも設定できますが、メニューバーの「ファイル(File)→設定(Preferences)」から起動できる設定ダイアログで設定できるものはそちらで設定して,startup.mにはそれ以外の設定を書いておくのがいいかなというのが私見です。
で、例えば自分用のライブラリフォルダなどは,日々フォルダが作成されたり,階層が掘られたりするのでstartup.mからパスを追加してやった方が楽だと思います。
また、Figureについての設定は結局個別に弄るでしょうから気休め程度です。

以下,一応startup.mの例を載せておいてみます。
書きすぎた気もしますし、これをそのまま使うとややFigureは変になると思います。
僕自身は最初の3つと多少のFigure設定(Figureウインドウの背景を透明になど)しか実際にはやっていません。
これ以外にももろもろの設定を行うことができます。
%%%% 作業フォルダに移動
cd('C:¥sach1o¥MATLAB');

%%%% 自分の作ったライブラリを全部追加(指定したディレクトリ以下を全部パスに追加)
addpath(genpath('C:¥sach1o¥MATLAB¥lib'));

%% diaryコマンドが作るファイルに拡張子を追加
set(0, 'DiaryFile', 'diary.txt');


%%%% Figureウインドウ関係のデフォルト設定 -- 以下は参考程度に

scrsz = get(0, 'ScreenSize');    % スクリーンサイズの取得

% Figureウインドウの位置とサイズのデフォルト
set(0, 'defaultFigurePosition', [200 scrsz(4)-620 480 360]);

% Figureの紙の大きさ
set(0, 'defaultFigurePaperType', 'A4');

% Figureの寸法の単位
set(0, 'defaultFigurePaperUnits', 'inches');

% 黒背景のものprintするときに色を変更するか?
set(0, 'defaultFigureInvertHardcopy', 'on');

% 軸のボックスをonに
set(0, 'defaultAxesBox', 'on');

%% 色関係
% テキストカラー
set(0, 'defaultTextColor', [1 0 0]);

% 各軸の色 (軸の目盛りのテキストも変更)
set(0, 'defaultAxesXColor', [0 0 0]);
set(0, 'defaultAxesYColor', [0 0 0]);
set(0, 'defaultAxesZColor', [0 0 0]);

% パッチのエッジの色
set(0, 'defaultPatchEdgeColor', [0 0 0]);

% Surfaceのエッジの色
set(0, 'defaultSurfaceEdgeColor', [0 0 0]);

% 注釈オブジェクトの線の色 plot の色ではなくannotationの色 Figureウインドウで書ける線の色
set(0, 'defaultLineColor', [1 0 0]);

% Figureウインドウの色
%    この例では透明にしていますが、[1 1 1]なら白などカラーベクトルで指定できます。
set(0, 'defaultFigureColor', 'none');

% 軸の色(プロットエリアの色)
set(0, 'defaultAxesColor', [1 1 1]);

% plotなどで自動的に付けられる色の指定
corder = [[1 0 0];[0 0.5000 0];[0 0 1];[1 0.7500 0.7500];[0.7500 0 0.7500];[0.7500 0.7500 0];[0.2500 0.2500 0.2500]];
set(0, 'defaultAxesColorOrder', corder);

% デフォルトのカラーマップ
cmap = spring(128);
set(0, 'defaultFigureColormap', cmap);

%% フォント関係
% GUIのフォント
set(0, 'defaultUicontrolFontName', 'MS UI Gothic');
% 軸のフォント
set(0, 'defaultAxesFontName', 'Arial');
% タイトル、注釈などのフォント
set(0, 'defaultTextFontName', 'Times');

% GUIのフォントサイズ
set(0, 'defaultUicontrolFontSize', 9);

% 軸のフォントサイズ
set(0, 'defaultAxesFontSize', 10);

% タイトル、注釈などのフォントサイズ
set(0, 'defaultTextFontSize', 12);

%% そのほか
% 軸の線の太さ
set(0, 'DefaultAxesLineWidth', 3);

% 注釈オブジェクトの線の太さ
set(0, 'DefaultLineLineWidth', 3);

また、起動時にオプションを指定してやる方法(これとかこれ)もありますが、こちらはMATLABを他の言語から使用したい人以外はあまり使わないと思います。

参考:MATLAB:マニュアル:MATLAB:関数:サイバネットシステム
参考:MATLAB:技術サポート:テクニカルFAQユーザ毎にMATLABの環境をカスタマイズ出来ますか?:サイバネットシステム
参考:MATLAB:マニュアル:MATLAB:Desktop Tools and Development Environment:サイバネットシステム
参考:MATLAB:マニュアル:MATLAB:Desktop Tools and Development Environment:サイバネットシステム
このエントリに付けられたタグ|MATLABstartup()環境設定Figure

[その他] 適当はダメすね

「FigureのメタファイルをWord2000で正しく表示させる」の記事に書いてあった関数が良く考えるとパスに半角スペースあると動かないなと気づいたので修正した。
ファイルも差し替えました。

結構適当に書いてるからそういうの多そうだな。

このエントリに付けられたタグ|MATLABファイル操作グラフィックスFigureメタファイル

[Graphics] FigureのメタファイルをWord2000で正しく表示させる

2007/02/03 よく考えるとパスに半角スペースとか混ざってると動かないことに気づいたので修正。ファイルも差し替えた。

なんだがよくわかりませんが,MATLABのFigureをメタファイル(EMF)形式でWord 2000に挿入すると、縦書き文字が文字化けします。
例えばFigureウインドウでこう↓表示されているものが…
FIGUREウインドウ

Word2000に挿入するとこう↓なってしまいます。
WORD2000にemf


これはこのように↓サイバネットのページにも書いてある問題で,解決策が載ってるのか?と思いきや,
MATLAB:テクニカルFAQ Figureウィンドウの表示結果をEMF形式でMicrosoft Word 2000に挿入すると、縦書き文字が文字化けしてしまいます。:サイバネットシステム

参照リンク↓を見るといちいち編集しろ!とのこと。
[WD2000] Word 97 文書を開くとグラフの Y 軸ラベルの文字の向きが変更される

しかし,いちいち編集しろというのも酷な話。
というか「今更Word2000使うなよ!」というのがもっともな話なんですが,僕みたいに未だにWord2000を使っている人もいるはず。

で,僕が解決策。
一応,コマンドラインで強制的にベーシックなwmfに変換してやると大丈夫(っぽい。というか僕はそれで困っていない…)
以下手順。(一応面倒な人はmファイルとかひとまとめでここにある1番のzipファイルに収めてありますのでDLしてください。)

まず準備として下記をしてください。(上記zipファイルをDLした人はsetup.cmdをダブルクリックすれば下記が実行されます.ペイントでout.wmfが開けばオッケー。saveaswmf.mをMATLABのパスが通ってるところに保存すればMATLAB上で動くはずです。)
  1. The Code Projectのemf2wmfをここからダウンロード。
    EMF to WMF conversion using GDI+ - The Code Project - GDI+
  2. 解凍して適当にWindowsのパスが通ってるところにemf2wmf.exeをコピー。(C:WINDOWSの下で問題ない。)
  3. emf2wmfが動くかを確認する。滞りなく実行できれば,emf2wmfがきちんと動くかと思います。
基本的には,これを実行するれば問題ありません。ただ,いちいちこんなのを実行していたらたまったものではありません。
そこで下記のようなmファイルを作ります。
保存先はMATLAB上でパスが通っているところがよいです。
(よくわからない人は例えばC:Program FilesMATLABR2006bworklib内にsaveaswmf.mを保存してaddpath('C:Program FilesMATLABR2006bworklib')とする。)
function saveaswmf(filepath, graphH)
%SAVEASWMF Windowsメタファイルとしてフィギュアを保存

% 引数のチェック
if nargin == 0 filepath = 'matlab.wmf'; end;
if ~ischar(filepath) error('第1引数のパスは文字列である必要があります。'); end;
if nargin < 2 graphH = get(0,'CurrentFigure'); end;
if isempty(graphH) error('カレントFigureがありません。'); end;

% パスを絶対パスに変換
[dirname, filename, ext, versn] = fileparts(filepath);
if isempty(regexpi(ext, 'wmf')) error('第1引数のパスは,拡張子がwmfもしくはWMFである必要があります。'); end;
[num,pathinfo] = fileattrib(dirname);
filepath = fullfile(pathinfo.Name, strcat([filename, ext]));

% 一時ファイルの作成
tmpfile = fullfile(matlabroot,'tmpfileforsaveaswmf.emf');
if exist(tmpfile,'file')~=0 delete(tmpfile); end;
saveas(graphH, tmpfile, 'emf');

% Windowsメタファイル形式で保存
if exist(filepath,'file')~=0 delete(filepath); end;
[s,w] = system(strcat(['emf2wmf "', tmpfile, '" "', filepath, '"']));

% 一時ファイルの削除
delete(tmpfile);

実際に使うときはこんな感じで。gcfのところは任意のグラフィックスハンドルで問題ない。
ちなみに第2引数がないのとgcfを与えるのは同じことです。
saveaswmf('保存先のパス', gcf)

例えば下記を実行すればカレントディレクトリにdemo.wmfが保存されるはずです。
saveaswmf('demo.wmf', plot([0:10]))

この関数を使った場合,Word2000に図を挿入してもこのように↓Y軸のラベルが変になりません(ならないはず…)
WORD2000にwmf

よく考えたらこのエントリ「FigureをWindowsメタファイルとして保存する」でもよかったですね。

このエントリのmファイル
このエントリに付けられたタグ|MATLABファイル操作グラフィックスFigureメタファイル

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。