Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

コード実行中の Sine Wave ブロックの位相パラメーターの調整

特定の条件下では、Sine Wave ブロックの [位相] パラメーターを調整可能なグローバル変数として生成したコードに表示するように設定できない場合があります (詳細についてはブロックのリファレンス ページを参照)。以下の例では、実行中に位相を調整できるようにコードを生成する方法を示します。

Digital Clock ブロックを使用してモデル ex_phase_tunable を作成します。

open_system('ex_phase_tunable')

[既定のパラメーター動作] を [Tunable] に設定し、Sine Wave ブロックのパラメーターがグローバル パラメーター構造体の調整可能なフィールドとして生成されたコードに表示されるようにします。

set_param('ex_phase_tunable','DefaultParameterBehavior','Tunable')

モデルからコードを生成します。

slbuild('ex_phase_tunable')
### Starting build procedure for: ex_phase_tunable
### Successful completion of code generation for: ex_phase_tunable

Build Summary

Top model targets built:

Model             Action           Rebuild Reason                                    
=====================================================================================
ex_phase_tunable  Code generated.  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 20.993s

コード生成レポートで、ファイル ex_phase_tunable.c を表示します。Sine Wave ブロック出力は、モデルの関数 step のコード アルゴリズムで計算されます。[位相] を含むブロックのパラメーターは、調整可能な構造体フィールドとしてコードに表示されます。

file = fullfile('ex_phase_tunable_grt_rtw','ex_phase_tunable.c');
coder.example.extractLines(file,'/* Outport: ''<Root>/Out1'' incorporates:',...
    'ex_phase_tunable_P.SineWave_Bias;',1,1)
  /* Outport: '<Root>/Out1' incorporates:
   *  DigitalClock: '<Root>/Digital Clock'
   *  Sin: '<Root>/Sine Wave'
   */
  ex_phase_tunable_Y.Out1 = sin(ex_phase_tunable_P.SineWave_Freq *
    (((ex_phase_tunable_M->Timing.clockTick1+
       ex_phase_tunable_M->Timing.clockTickH1* 4294967296.0)) * 1.0) +
    ex_phase_tunable_P.SineWave_Phase) * ex_phase_tunable_P.SineWave_Amp +
    ex_phase_tunable_P.SineWave_Bias;

コードの実行中に、新しい値を [位相] パラメーターに対応する構造体フィールドに割り当てることができます。

関連するトピック