Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

FunctionApproximation.Problem クラス

パッケージ: FunctionApproximation

近似する関数または最適化するルックアップ テーブルを定義するオブジェクト

説明

FunctionApproximation.Problem オブジェクトは、ルックアップ テーブルで近似する関数または最適化するルックアップ テーブルを定義します。問題を定義した後、solve メソッドを使用して、近似を含む FunctionApproximation.LUTSolution オブジェクトを生成します。

作成

approximationProblem = FunctionApproximation.Problem() は、既定のプロパティ値で FunctionApproximation.Problem オブジェクトを作成します。function 入力が指定されていない場合、FunctionToApproximate プロパティは 'sin' に設定されます。

approximationProblem = FunctionApproximation.Problem(function) は、function で指定された関数、Math Function ブロック、またはルックアップ テーブルを近似する FunctionApproximation.Problem オブジェクトを作成します。

入力引数

すべて展開する

近似する関数またはブロック、または最適化する Lookup Table ブロック。関数ハンドル、数学関数、Simulink® ブロックまたはサブシステム、またはいずれかの Lookup Table ブロック (1-D Lookup Tablen-D Lookup Table など) として指定します。

いずれかの Lookup Table ブロックを指定した場合、solve メソッドは最適化されたルックアップ テーブルを生成します。

数学関数、関数ハンドル、またはブロックを指定した場合、solve メソッドは入力関数のルックアップ テーブルの近似を生成します。

関数ハンドルは MATLAB® 検索パスにないと近似は失敗します。

近似でサポートされる MATLAB 数学関数は次のとおりです。

  • 1./x

  • 10.^x

  • 2.^x

  • acos

  • acosh

  • asin

  • asinh

  • atan

  • atan2

  • atanh

  • cos

  • cosh

  • exp

  • log

  • log10

  • log2

  • sin

  • sinh

  • sqrt

  • tan

  • tanh

  • x.^2

ヒント

ルックアップ テーブルの近似の生成プロセスは、サブシステムよりも関数ハンドルの方が迅速です。サブシステムを関数ハンドルで表すことができる場合は、関数ハンドルの方が迅速に処理できます。

データ型: char | function_handle

プロパティ

すべて展開する

近似する関数またはブロック、または最適化する Lookup Table ブロック。関数ハンドル、数学関数、Simulink ブロックまたはサブシステム、またはいずれかの Lookup Table ブロック (1-D Lookup Tablen-D Lookup Table など) として指定します。

いずれかの Lookup Table ブロックを指定した場合、solve メソッドは最適化されたルックアップ テーブルを生成します。

数学関数、関数ハンドル、またはブロックを指定した場合、solve メソッドは入力関数のルックアップ テーブルの近似を生成します。

関数ハンドルは MATLAB 検索パスにないと近似は失敗します。

近似でサポートされる MATLAB 数学関数は次のとおりです。

  • 1./x

  • 10.^x

  • 2.^x

  • acos

  • acosh

  • asin

  • asinh

  • atan

  • atan2

  • atanh

  • cos

  • cosh

  • exp

  • log

  • log10

  • log2

  • sin

  • sinh

  • sqrt

  • tan

  • tanh

  • x.^2

ヒント

ルックアップ テーブルの近似の生成プロセスは、サブシステムよりも関数ハンドルの方が迅速です。サブシステムを関数ハンドルで表すことができる場合は、関数ハンドルの方が迅速に処理できます。

データ型: char | function_handle

近似される関数に対する入力の数。このプロパティは FunctionToApproximate プロパティから継承されるため、書き込み可能なプロパティではありません。

Direct Lookup Table を生成している場合、近似する関数の入力は 2 つ以下です。

データ型: double

近似される関数に対する入力の目的のデータ型。numerictypeSimulink.Numerictypenumerictype オブジェクトのベクトル、または Simulink.Numerictype オブジェクトのベクトルとして指定します。指定する InputTypes の数は NumberOfInputs と一致しなければなりません。

例: problem.InputTypes = ["numerictype(1,16,13)", "numerictype(1,16,10)"];

近似する関数に対する入力の範囲の下限。スカラーまたはベクトルとして指定します。inf を指定すると、近似で使用される InputLowerBoundsInputTypes プロパティから導出されます。InputLowerBounds の次元は NumberOfInputs と一致しなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

近似する関数に対する入力の範囲の上限。スカラーまたはベクトルとして指定します。inf を指定すると、近似で使用される InputUpperBoundsInputTypes プロパティから導出されます。InputUpperBounds の次元は NumberOfInputs と一致しなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

関数の近似による出力の目的のデータ型。numerictype または Simulink.Numerictype として指定します。たとえば、出力が語長が 16 ビットで小数部の長さが最高精度の符号付き固定小数点データ型になるように指定するには、OutputType プロパティを "numerictype(1,16)" に設定します。

例: problem.OutputType = "numerictype(1,16)";

近似で使用する追加のオプションと制約。FunctionApproximation.Options オブジェクトとして指定します。

メソッド

solve関数の近似の問題に対する最適化された解の計算

コピーのセマンティクス

ハンドル。ハンドル クラスがコピー操作にどのように影響するかについては、オブジェクトのコピーを参照してください。

すべて折りたたむ

FunctionApproximation.Problem オブジェクトを作成し、近似する関数ハンドルを指定します。

problem = FunctionApproximation.Problem(@(x,y) sin(x)+cos(y))
problem = 

  FunctionApproximation.Problem with properties

    FunctionToApproximate: @(x,y)sin(x)+cos(y)
           NumberOfInputs: 2
               InputTypes: ["numerictype('double')"    "numerictype('double')"]
         InputLowerBounds: [-Inf -Inf]
         InputUpperBounds: [Inf Inf]
               OutputType: "numerictype('double')"
                  Options: [1×1 FunctionApproximation.Options]

この FunctionApproximation.Problem オブジェクト problem で使用しているプロパティの値は既定の値です。

関数入力の範囲を 0 ~ 2*pi に設定します。

problem.InputLowerBounds = [0,0];
problem.InputUpperBounds = [2*pi, 2*pi]
problem = 

  FunctionApproximation.Problem with properties

    FunctionToApproximate: @(x,y)sin(x)+cos(y)
           NumberOfInputs: 2
               InputTypes: ["numerictype('double')"    "numerictype('double')"]
         InputLowerBounds: [0 0]
         InputUpperBounds: [6.2832 6.2832]
               OutputType: "numerictype('double')"
                  Options: [1×1 FunctionApproximation.Options]

FunctionApproximation.Problem オブジェクトを作成し、近似する数学関数を指定します。

problem = FunctionApproximation.Problem('log')
problem = 

  FunctionApproximation.Problem with properties

    FunctionToApproximate: @(x)log(x)
           NumberOfInputs: 1
               InputTypes: "numerictype(1,16,10)"
         InputLowerBounds: 0.6250
         InputUpperBounds: 15.6250
               OutputType: "numerictype(1,16,13)"
                  Options: [1×1 FunctionApproximation.Options]

この数学関数の入力範囲、入力データ型、および出力データ型のプロパティは既定の設定です。

FunctionApproximation.Problem オブジェクトを作成して既存のルックアップ テーブルを最適化します。

load_system('sldemo_fuelsys');
problem = FunctionApproximation.Problem('sldemo_fuelsys/fuel_rate_control/airflow_calc/Pumping Constant')
problem = 

  FunctionApproximation.Problem with properties

    FunctionToApproximate: 'sldemo_fuelsys/fuel_rate_control/airflow_calc/Pumping Constant'
           NumberOfInputs: 2
               InputTypes: ["numerictype('single')"    "numerictype('single')"]
         InputLowerBounds: [50 0.0500]
         InputUpperBounds: [1000 0.9500]
               OutputType: "numerictype('single')"
                  Options: [1×1 FunctionApproximation.Options]

この problem オブジェクトのプロパティはモデルから推定されます。

制限

  • ルックアップ テーブル オブジェクトとブレークポイント オブジェクトは、モデル マスク ワークスペースではサポートされていません。

アルゴリズム

すべて展開する

R2018a で導入