Main Content

coder.load

MAT ファイルまたは ASCII ファイルからコンパイル時の定数を読み込む

説明

S = coder.load(filename) は、filename からコンパイル時の定数を読み込みます。

  • filename が MAT ファイルの場合、coder.load により MAT ファイルから構造体配列に変数が読み込まれます。

  • filename が ASCII ファイルの場合、coder.load により倍精度配列にデータが読み込まれます。

coder.load は、"コンパイル時" とも呼ばれるコード生成時にデータを読み込みます。コードを生成した後に filename の内容を変更すると、変更は生成されたコードの動作に反映されません。

S = coder.load(filename,var1,...,varN) は、指定された変数のみを MAT ファイル filename から読み込みます。

S = coder.load(filename,'-regexp',expr1,...,exprN) は、指定された正規表現に一致する変数のみを読み込みます。

S = coder.load(filename,'-ascii') は、ファイルの拡張子に関係なく filename を ASCII ファイルとして扱います。

S = coder.load(filename,'-mat') は、ファイルの拡張子に関係なく filename を MAT ファイルとして扱います。

S = coder.load(filename,'-mat',var1,...,varN) は、filename を MAT ファイルとして扱い、指定した変数のみをファイルから読み込みます。

S = coder.load(filename,'-mat','-regexp', expr1,...,exprN) は、filename を MAT ファイルとして扱い、指定した正規表現に一致する変数のみを読み込みます。

すべて折りたたむ

(正規化されたイメージを与えると、しきい値に基づいてエッジが検出されたイメージを返す関数 edgeDetect1 のコードを生成します。edgeDetect1 は、coder.load を使用して、エッジ検出カーネルをコンパイル時に MAT ファイルから読み込みます。

Sobel エッジ検出カーネルを MAT ファイルに保存します。

k = [1 2 1; 0 0 0; -1 -2 -1];

save sobel.mat k

関数 edgeDetect1 を作成します。

function edgeImage = edgeDetect1(originalImage, threshold) %#codegen
assert(all(size(originalImage) <= [1024 1024]));
assert(isa(originalImage, 'double'));
assert(isa(threshold, 'double'));

S = coder.load('sobel.mat','k');
H = conv2(double(originalImage),S.k, 'same');
V = conv2(double(originalImage),S.k','same');
E = sqrt(H.*H + V.*V);
edgeImage = uint8((E > threshold) * 255);

スタティック ライブラリ用のコード生成構成オブジェクトを作成します。

cfg = coder.config('lib');

edgeDetect1 のスタティック ライブラリを生成します。

codegen -report -config cfg edgeDetect1

codegen によって C コードが codegen\lib\edgeDetect1 フォルダー内に生成されます。

(正規化されたイメージを与えると、しきい値に基づいてエッジが検出されたイメージを返す関数 edgeDetect2 のコードを生成します。edgeDetect2 は、coder.load を使用して、エッジ検出カーネルをコンパイル時に ASCII ファイルから読み込みます。

Sobel エッジ検出カーネルを ASCII ファイルに保存します。

k = [1 2 1; 0 0 0; -1 -2 -1];
save sobel.dat k -ascii

関数 edgeDetect2 を作成します。

function edgeImage = edgeDetect2(originalImage, threshold) %#codegen
assert(all(size(originalImage) <= [1024 1024]));
assert(isa(originalImage, 'double'));
assert(isa(threshold, 'double'));

k = coder.load('sobel.dat');
H = conv2(double(originalImage),k, 'same');
V = conv2(double(originalImage),k','same');
E = sqrt(H.*H + V.*V);
edgeImage = uint8((E > threshold) * 255);

スタティック ライブラリ用のコード生成構成オブジェクトを作成します。

cfg = coder.config('lib');

edgeDetect2 のスタティック ライブラリを生成します。

codegen -report -config cfg edgeDetect2

codegen によって C コードが codegen\lib\edgeDetect2 フォルダー内に生成されます。

入力引数

すべて折りたたむ

ファイル名。filename はコンパイル時の定数でなければなりません。

filename には、ファイル拡張子、および絶対パスまたは部分パスを含めることができます。filename に拡張子がない場合、loadfilename.mat というファイルを探します。filename.mat 以外の拡張子をもつ場合、load は、ASCII データとしてファイルを扱います。

ASCII ファイルには、各行の要素の数が等しい、数値から構成される四角形のテーブルが含まれなければなりません。ファイルの区切り記号 (各行の要素の間の文字) には、空白、コンマ、セミコロン、またはタブ文字を使用できます。ファイルには、MATLAB® コメント (パーセント記号 % で始まる行) を含めることができます。

例: 'myFile.mat'

変数名。1 つ以上の文字ベクトルまたは string スカラーとして指定します。各変数名はコンパイル時の定数でなければなりません。パターンを一致させるには、* ワイルドカードを使用します。

例: coder.load('myFile.mat','A*') は、A で始まるすべての変数をファイルから読み込みます。

読み込む変数を示す正規表現。1 つ以上の文字ベクトルまたは string スカラーとして指定します。各正規表現はコンパイル時の定数でなければなりません。

例: coder.load('myFile.mat', '-regexp', '^A') は、A で始まる変数のみを読み込みます。

出力引数

すべて折りたたむ

filename が MAT ファイルの場合、S は構造体配列になります。

filename が ASCII ファイルの場合、Sdouble 型の m 行 n 列の配列になります。ここで、m はファイルの行数を表し、n は 1 行に含まれる値の数を表します。

制限

  • coder.load への引数は、コンパイル時の定数でなければなりません。

  • 出力 S は、添字を使用しない構造体または配列の名前でなければなりません。たとえば、S(i) = coder.load('myFile.mat') と指定することはできません。

  • 関数内部において、ワークスペース データをファイルに保存するコードを生成する目的で save を使用することはできません。コード ジェネレーターは関数 save をサポートしません。さらに、savecoder.extrinsic を使用できません。コードを生成する前に、save を使用してワークスペース データをファイルに保存することができます。

ヒント

  • coder.load(filename) は、実行時ではなくコンパイル時にデータを読み込みます。コードを生成した後に filename の内容を変更すると、変更は生成されたコードの動作に反映されません。MEX コードまたは Simulink® シミュレーション用のコードを生成する場合、MATLAB 関数 load を使用して実行時の値を読み込むことができます。

  • MAT ファイルにサポートされていない構成が含まれている場合、coder.load(filename,var1,...,varN) を使用してサポートされている構成のみを読み込んでください。

  • MATLAB Coder™ プロジェクトでコードを生成する場合、コード ジェネレーターは、関数 coder.load に対してインクリメンタルなコード生成を行います。coder.load が使用する MAT ファイルまたは ASCII ファイルが変更されると、このソフトウェアはコードをリビルドします。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2013a で導入

参考

| |

トピック