R12 Release Notes | ![]() ![]() |
MATLABのJavaインタフェース
MATLAB 6.0は、Javaクラスからオブジェクトを作成し、それらのオブジェクトに対してメソッド呼び出しが可能なJavaインタフェースを提供します。既存のJavaクラスを利用したり、独自のクラスを作成することが可能です。この機能のまとめは、MATLABのJavaインタフェースを参照してください。詳しいドキュメントについては、オンラインヘルプの"外部インタフェース/API" のMATLABからのJavaの呼び出し を参照してください。
関数ハンドル
MATLAB言語は、関数ハンドルと呼ばれる新たなデータタイプを持ちます。任意のMATLAB関数にハンドルを作成でき、そのハンドルを関数の参照の手段として利用することができます。関数ハンドルは、通常別の関数の引数リストに渡され、その後ハンドルを利用して関数を実行あるいは評価 することが可能です。
MATLAB関数ハンドルは、関数への参照以外にも使われます。関数ハンドルは、異なる引数タイプを取り扱うためオーバロードされた関数メソッドの集合を表わすことがあります。関数ハンドルの作成時に、MATLABはMATLABパス上に存在するその名前のすべての組み込みメソッドどM-ファイルメソッドのスナップショットを取り、それらのメソッドのすべてのアクセス情報をハンドルに格納します。
関数ハンドルの評価時には、MATLABはハンドルの作成時にハンドルに組み込まれた関数のみを考えます。これは、ハンドル内に存在するどの関数を組合せ、ハンドルが計算されるのに必要な引数はどれかを決め、MATLABが送り出す実際の関数を決定します。
関数ハンドルを使って、以下のことを行うことができます。これらの項目については、オンラインドキュメントの関数ハンドルを利用する利点で詳しく説明しています。
関数名の前にat 記号 @ を使って、MATLABで関数ハンドルを作成します。以下の例は、関数humps
に対する関数ハンドルを作成し、変数fhandle
に割り当てます。
fhandle = @humps;
引数を渡すのと同じ方法でハンドルを渡します。以下の例は、作成したハンドルを区間[0.3, 1]で最小化を行うfminbnd
に渡します。
x = fminbnd (fhandle, 0.3, 1) x = 0.6370
関数fminbnd
は、MATLAB関数feval
を使って関数ハンドル@humps
を計算します。
詳細は、MATLABドキュメントの"プログラミングとデータタイプ"の関数ハンドルを参照してください。
関数ハンドルの操作を行う関数
以下のMATLAB関数は、関数ハンドルデータタイプに対して機能します。関数func2str
, functions
, str2func
は、新規のMATLAB言語関数です。
関数 |
目的 |
feval |
ハンドルによって関数を実行 |
func2str |
関数ハンドルから関数名の文字列を作成 |
functions |
関数ハンドルに関する情報を表示 |
isa |
オブジェクトが関数ハンドルであるかどうかを決定 |
isequal |
関数ハンドルの比較 |
str2func |
関数名の文字列から関数ハンドルを作成 |
CONTINUEフローコントロールステートメント
continue
ステートメントは、ループ本体内の残りのステートメントをスキップして、コントロールをfor
またはwhile
ループ内の次の繰り返しに渡します。入れ子形式のループ内では、continue
はcontinue
を囲むfor
またはwhile
ループの次の繰り返しにコントロールを渡します。
以下の例は、ファイルmagic.m
内のコードの行数を、すべての空白行とコメントを除いてカウントするcontinue
ループです。continue
ステートメントは、空白行またはコメント行があったときにカウント(count)をインクリメントしないでmagic.m
の次の行に進むために利用されます。
fid = fopen('magic.m','r'); count = 0; while ~feof(fid) line = fgetl(fid); if isempty(line) | strncmp(line,'%',1) continue end count = count + 1; end disp(sprintf('%d lines',count));
新規MATLABプログラミング関連関数
以下に示すプログラミング関連関数は、本リリースの新規関数です。
関数 |
目的 |
|
コンピュータのビープ音を生成 |
|
指定したディレクトリの下のすべてのディレクトリを含むパス文字列を生成 |
|
入力文字列がMATLABキーワードであるかどうかをチェック |
|
入力文字列が有効な変数名であるかどうかをチェック |
|
出力引数の数をチェック |
|
オブジェクト内の要素数を出力 |
|
関数とファイルシステムのキャッシュを新しくします |
|
MathWorks Technical Support Webページをオープン |
親のクラスのみを継承するオブジェクトの作成
MATLAB 5では、関数class
は、1つまたは複数の親のクラスからフィールドおよびメソッドを継承する新規オブジェクトを作成することができます。しかし、この新規オブジェクトは、class
の呼び出しに渡されるstructure_name
引数に属する追加フィールドを取得します。
obj = class(structure_name,'class_name',parent1,parent2...)
MATLAB 6.0では、指定された親オブジェクトから継承されたフィールド以外は含まない新規オブジェクトを作成することができます。これは、以下のシンタックスを使って行います。
obj = class(struct([]),'class_name',parent1,parent2,...)
コード長制限の削除
M-ファイルでのシンタックスチェックの実行
ファイルを実行する前にM-ファイルのシンタックスのチェックを行うことができます。そのためには、以下のコマンドを利用します。
check_syntactic_warnings
このコマンドは、M-ファイルのメモリへの読み込み時に、MATLABが生成するすべてのワーニングに対する引数リストによって指定されるディレクトリ内のすべてのM-ファイルをチェックします。引数リストディレクトリに含まれるすべての@クラスとプライベートディレクトリが処理されます。クラスとプライベートディレクトリは、この関数の明示的な引数として与えません。
引数リストが指定されない場合は、ツールボックス以外のMATLABパスとカレントの作業ディレクトリのすべてのファイルがチェックされます。
引数リストが正確に'-toolboxes'
である場合は、ツールボックスを含むMATLABパスとカレントの作業ディレクトリ内のすべてのファイルがチェックされます。
help check_syntactic_warnings
このコマンドは、配列要素間で必要なセパレータキャラクタが失われているときに特に役立ちます。配列要素間にはセパレータが必要ですを参照してください。
![]() | 数学関数 | グラフィックス機能 | ![]() |