Main Content

generateFiles

コーダー コンフィギュアラーを使用するコード生成用 MATLAB ファイルの生成

説明

generateFiles(configurer) は、コーダー コンフィギュアラー configurer を使用した C/C++ コード生成に必要な MATLAB® ファイルを生成し、生成されたファイルを現在のフォルダーに保存します。

コード生成ワークフローをカスタマイズするには、generateFilescodegen (MATLAB Coder) を使用します。ワークフローをカスタマイズする必要がない場合は、generateCode を使用します。

generateFiles は、以下の MATLAB ファイルを生成します。

  • predict.mupdate.m および initialize.mpredict.mupdate.m はそれぞれ、機械学習モデルの関数 predict および update のエントリポイント関数です。この 2 つの関数で initialize.m を呼び出します。これらのファイルは、使用するコード生成ワークフローに従って変更できます。たとえば、predict.m ファイルを変更してデータの前処理を含めたり、これらのエントリポイント関数を別のコード生成プロジェクトに追加したりできます。

  • 機械学習モデルの情報が格納されている MAT ファイル — generateFiles は、関数 saveLearnerForCoder を使用して、機械学習モデルの情報を MAT ファイルに保存します。このファイルの名前は、コーダー コンフィギュアラーの OutputFileName プロパティに格納されます。initialize.m は、関数 loadLearnerForCoder を使用して、保存された MAT ファイルを読み込みます。

これらのファイルを生成した後で、codegen (MATLAB Coder) と、コーダー コンフィギュアラーの CodeGenerationArguments プロパティに格納されている準備された引数 codegen を使用して、C/C++ コードを生成します。

既に 4 つの MATLAB ファイルがすべてフォルダーに格納されている場合、generateFiles はファイルを生成しません。

generateFiles(configurer,'OutputPath',outputPath) は、outputPath で指定されたフォルダーに MATLAB ファイルを生成します。

すべて折りたたむ

機械学習モデルに学習させてから、コーダー コンフィギュアラーを使用して、モデルの関数 predict および update に対する C/C++ コードの生成に必要な MATLAB® ファイルを生成します。

ionosphere データ セットを読み込みます。

load ionosphere

自動カーネル スケールのガウス カーネル関数を使用してバイナリ サポート ベクター マシン (SVM) 分類モデルに学習させます。

Mdl = fitcsvm(X,Y, ...
    'KernelFunction','gaussian','KernelScale','auto');

Mdl は、ClassificationSVM オブジェクトです。

ClassificationSVM オブジェクトに対してコーダー コンフィギュアラーを作成します。

configurer = learnerCoderConfigurer(Mdl,X);

configurer は、ClassificationSVM オブジェクトのコーダー コンフィギュアラーである ClassificationSVMCoderConfigurer オブジェクトです。

generateFiles を使用して、モデルの関数 predict および update に対する C/C++ コードの生成に必要な MATLAB ファイルを生成します。

generateFiles(configurer)

generateFiles は、predict.mupdate.minitialize.m、および ClassificationSVMModel.mat (機械学習モデルの情報が含まれている MAT ファイル) を生成します。

predict.mupdate.m および initialize.m ファイルの内容を表示します。

type predict.m % Display contents of predict.m
function varargout = predict(X,varargin) %#codegen
% Autogenerated by MATLAB, 25-Jan-2024 22:14:10
[varargout{1:nargout}] = initialize('predict',X,varargin{:});
end
type update.m % Display contents of update.m
function update(varargin) %#codegen
% Autogenerated by MATLAB, 25-Jan-2024 22:14:10
initialize('update',varargin{:});
end
type initialize.m % Display contents of initialize.m
function [varargout] = initialize(command,varargin) %#codegen
% Autogenerated by MATLAB, 25-Jan-2024 22:14:10
coder.inline('always')
persistent model
if isempty(model)
    model = loadLearnerForCoder('ClassificationSVMModel.mat');
end
switch(command)
    case 'update'
        % Update struct fields: Alpha
        %                       SupportVectors
        %                       SupportVectorLabels
        %                       Scale
        %                       Bias
        %                       Prior
        %                       Cost
        model = update(model,varargin{:});
    case 'predict'
        % Predict Inputs: X
        X = varargin{1};
        if nargin == 2
            [varargout{1:nargout}] = predict(model,X);
        else
            PVPairs = cell(1,nargin-2);
            for i = 1:nargin-2
                PVPairs{1,i} = varargin{i+1};
            end
            [varargout{1:nargout}] = predict(model,X,PVPairs{:});
        end
end
end

codegen (MATLAB Coder) と、configurerCodeGenerationArguments プロパティに格納されている準備された引数 codegen を使用して、C/C++ コードを生成します。

cfArgs = configurer.CodeGenerationArguments;
codegen(cfArgs{:})
Code generation successful.

入力引数

すべて折りたたむ

機械学習モデルのコーダー コンフィギュアラー オブジェクト。learnerCoderConfigurer を使用して作成したコーダー コンフィギュアラー オブジェクトを指定します。

モデルコーダー コンフィギュアラー オブジェクト
マルチクラス分類用の二分決定木ClassificationTreeCoderConfigurer
1 クラスおよびバイナリ分類用の SVMClassificationSVMCoderConfigurer
バイナリ分類用の線形モデルClassificationLinearCoderConfigurer
SVM モデルおよび線形モデル用のマルチクラス モデルClassificationECOCCoderConfigurer
回帰用の二分決定木RegressionTreeCoderConfigurer
サポート ベクター マシン (SVM) 回帰RegressionSVMCoderConfigurer
線形回帰RegressionLinearCoderConfigurer

generateFiles の出力ファイルのフォルダー パス。文字ベクトルまたは string 配列を指定します。

フォルダー パスとして、絶対パスまたは現在のフォルダー パスに対する相対パスを指定できます。

  • パスには空白を含めないでください。これは、オペレーティング システムの構成によってはコード生成の失敗を引き起こす可能性があります。

  • 日本語文字など、7 ビット ASCII 以外の文字をパスに含めることもできません。

指定されたフォルダーが存在しない場合、generateFiles はフォルダーを作成します。

generateFiles は以下の 4 つの MATLAB ファイル、predict.mupdate.minitialize.m、および機械学習モデルの情報を含む MAT ファイルを、指定されたフォルダーで探します。この 4 つのファイルがフォルダーに存在しない場合、generateFiles はファイルを生成します。それ以外の場合、generateFiles は MATLAB ファイルを生成しません。

例: 'C:\myfiles'

データ型: char | string

代替機能

  • コード生成ワークフローをカスタマイズするには、generateFilescodegen (MATLAB Coder) を使用します。ワークフローをカスタマイズする必要がない場合は、generateCode を使用します。関数 generateCode では generateFiles で生成される 4 つの MATLAB ファイルに加え、C/C++ コードも生成されます。

バージョン履歴

R2018b で導入