このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
コード実行中の 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;
コードの実行中に、新しい値を [位相] パラメーターに対応する構造体フィールドに割り当てることができます。