主要内容

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

万博1manbetxでのMATLAB函数ブロックを使用したMATLAB関数の実装

MATLAB函数ブロックでは,matlab®言語を使用してS万博1manbetximulink®モデル内にカスタム関数を定義できます。MATLAB函数ブロックは,万博1manbetx仿真软件编码器™および嵌入式编码器®からのc / c++コド生成をサポトしています。

これらのブロックは次のような場合に使用します。

  • カスタム機能をモデル化する既存のmatlab関数がある場合。または,こうした関数を容易に作成できる場合。

  • 万博1manbetx仿真软件グラフィカル言語では取得されない,または取得できないカスタム機能がモデルに必要な場合。

  • 万博1manbetx仿真软件ブロック線図を使うよりMATLAB関数を使う方がカスタム機能のモデル化が容易な場合。

  • モデル化するカスタム機能に連続状態または離散ダ@ @ナミクス状態が含まれない場合。動的状態をモデル化するには,S-Functionを使用する。MATLAB S-Functionの作成と構成を参照してください。

MATLAB函数ブロックによる平均と標準偏差の計算

この例はMATLAB函数ブロックを含むモデルから始まり,値のベクトルの平均と標準偏差を計算するためにブロックをカスタマイズする方法を順を追って説明していきます。

モデルを開く

モデルcall_stats_block1に,空のMATLAB函数ブロックとこの例に必要なブロックが含まれています。モデルを開きます。

MATLAB函数ブロックのプログラム

ベクトルの値から平均と標準偏差を計算するブロックをプログラムします。

  1. MATLAB函数ブロックエディタを開くには,MATLAB函数ブロックをダブルクリックします。MATLAB函数ブロックエディタに,2(1)。

    此图像显示了从call_stats_block1模型打开后的MATLAB函数块编辑器。它包含一个默认函数。

  2. 関数宣言ステ,トメントを編集して関数の入力と出力を定義します。

    函数[mean, stdev] = stats(vals)

    このステ,トメントは,统计数据という名前の,3の変数をも。このステトメントは,1の入力引数瓦尔斯と,2の出力引数的意思是および方差を定義します。

  3. 関数宣言ステ,トメントの後の新しい行に,以下のコ,ドを追加します。

    计算统计平均值和标准值的%偏差,单位为val。Len =长度(vals);Mean = avg(vals,len);方差=√总和(vals-avg (vals, len)) ^ 2)) / len);情节(瓦尔斯,”——+”);函数Mean = avg(数组,大小)Mean = sum(数组)/size;
  4. ブロックを終了します。ブロックにより端子名が更新されます。関数の出力的意思是および方差はブロックの出力端子(意味着)および(方差)に対応し,関数の入力瓦尔斯はブロックの入力端子(val)に対応します。

  5. MATLAB函数ブロックへの接続を次のように実行します。

    这显示了先前图像中建立的块之间的连接信号。

  6. モデルをcall_stats_block2という名前で保存します。

MATLAB函数ブロック変数のプロパティのチェック

MATLAB函数ブロック内の変数のプロパティをチェックして管理できます。MATLAB函数ブロックの変数の作成と定義を参照してください。この例では,入力引数瓦尔斯がその型とサ@ @ズのプロパティを継承していることを検証します。

  1. MATLAB函数ブロックをダブルクリックします。

  2. [シンボル]ペ@ @ンとプロパティ@ @ンスペクタ@ @を開きます。[関数]タブで,[デ,タの編集]をクリックします。

    [シンボル]ペereplicationンの[名前]列に変数名が表示されます。[タ电子邮箱プ]列により,関数の引数の端子の割り当てと,関数宣言ステ,トメントのどこに表示されるかが決まります。この例では,瓦尔斯は入力端子に割り当てられます。的意思是方差は出力端子に割り当てられます。いずれかの変数の[タ电子邮箱プ]エントリを変更すると,関数宣言ステ,トメントも変化します。

  3. 瓦尔斯のプロパティをチェックします。[シンボル]ペ电子邮箱ンで,瓦尔斯の行をクリックします。プロパティンスペクタが更新され,瓦尔斯のプロパティが表示されます。[スコ,プ]プロパティは[タ电子邮箱プ]列に一致しています。

    継承できるのは,一部のプロパティのみ,すなわ[サ电子邮箱ズ][単位][実数/複素数][型]のみです。次のとき,変数はそのプロパティを継承していることを示します。[サ电子邮箱ズ]-1[単位]继承[実数/複素数](继承)[型][继承:与Simulink相同]万博1manbetxに設定します。この例では,瓦尔斯[サ电子邮箱ズ][型]にいてこれらの値を使用しています。

[シンボル]ペ@ @ンでその他のMATLAB函数ブロック変数を選択し,チェックします。

既定では,新規定義された入力変数および出力変数は,そのサイズ,単位,実数/複素数,および型を継承します。変数で特定のサイズ,単位,または型を使用する場合,これらのプロパティを明示的に指定することもできます。たとえば,変数を2×3の行列として指定するには,[サ电子邮箱ズ]プロパティに”3 [2]と入力します。詳細にいては,変数のデ,タ型の定義と変更およびMATLAB函数ブロック変数のサescズの指定を参照してください。

関数のビルド

MATLAB函数ブロックにコ,ドを入力した後,コ,ドにエラ,がないかチェックし,関数をビルドできます。MATLAB函数ブロックのデバッグを参照してください。

モデルをビルドするとき,matlabはコンパescラを使用してMATLAB函数ブロックコドをコンパルします。システムにmatlabでサポトされているコンパラが複数ンストルされている場合は墨西哥人设置コマンドを使用して既定のコンパ@ @ラを変更できます。既定のコンパ@ @ラの変更を参照してください。サポトされるコンパイラのリストを確認するには、万博1manbetx支持和兼容的编译器を開き,ご利用のオペレ,ティングシステムに対応するタブをクリックし,[万博1manbetxSimulink製品ファミリ]テ,ブルの[用于模型引用、加速模式、快速加速模式和MATLAB函数块]列を参照してください。

万博1manbetx仿真软件で[実行]をクリックしてモデルのシミュレ,ションを実行します。ソフトウェアがモデルをビルドするとき,MATLAB函数ブロックをビルドし,関数のデ,タを2の显示ブロックに出力します。

コ,ド生成に向けたブロックの準備

MATLAB函数ブロックが含まれているモデルからスタンドアロンc / c++コドを生成するには,万博1manbetx仿真软件编码器または嵌入式编码器を使用します。

シミュレションおよびコド生成ビルド対応のサポトされているコンパラの選択

サポトされるコンパラのリストを確認するには,万博1manbetx支持和兼容的编译器を開き,ご利用のオペレ,ティングシステムに対応するタブをクリックし,[万博1manbetxSimulink製品ファミリ]テ,ブルの万博1manbetx仿真软件编码器列を参照してください。

MATLAB函数ブロックのコ,ド生成

万博1manbetx仿真软件编码器または嵌入式编码器のラセンスをお持の場合,モデルからコドを生成できます。コ,ドを生成するには,次を行います。

  1. call_stats_block2モデルでMATLAB函数ブロックをダブルクリックします。

  2. 万博1manbetx仿真软件编码器または嵌入式编码器アプリを開きます。

  3. [cコ,ド]タブで[ビルド]を選択し,モデル例をコンパ。

    [可変ステップ]ソルバーに関連するエラーが表示された場合,[コンフィギュレーションパラメーター]ウィンドウを開き,左側のペインで[ソルバ]をクリックしてください。[ソルバ,の選択][タ电子邮箱プ][固定ステップ]に設定し,コ,ドをもう一度生成します。固定ステップと可変ステップのソルバの違いに関する詳細にいては,固定ステップソルバと可変ステップソルバを参照してください。

参考

||

関連するトピック