このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
スタンドアロン チャートを使用したフィットネス アプリのモデル化
この例では、複数のスタンドアロン Stateflow® チャートと 1 つの MATLAB® アプリで構成されるアプリケーションを作成する方法を説明します。これらのスタンドアロン チャートは、このアプリケーションの制御システムおよびプラント システムと、MATLAB アプリとのインターフェイスをモデル化します。スタンドアロン チャートと MATLAB アプリとの接続の詳細については、Stateflow チャートを使用したヒューマンマシン インターフェイスのロジックの設計を参照してください。この例で、Simulink® モデルで Stateflow チャートを使用するバージョンについては、フィットネス トラッカーのモデル化を参照してください。
この例では、MATLAB アプリがフィットネス トラッカーをモデル化します。アプリを実行する場合、トラッカーの設定を調整し、アクティビティ ([Sleep]、[Rest]、[Walk]、または [Exercise]) を選択することができます。[Exercise] を選択した場合、運動の強さも設定できます。
スタンドアロン チャート sf_fitness_interface
は、MATLAB アプリと、この例の他のスタンドアロン チャート (sf_fitness_human
および sf_fitness_tracker
) との間の双方向接続を提供します。これらのチャートは、前者はヒューマン シミュレーターをモデル化し、後者はフィットネス トラッカーの中核となるロジックを提供します。アプリのウィジェットを操作する場合、sf_fitness_interface
チャートは選択内容をこの例の他のチャートに送信します。逆に、チャートはフィットネス トラッカーの出力を使用して、アプリの数値フィールドとテキスト フィールドを更新します。
この概略図は、この例のアプリとチャートの間での情報の移動を示しています。
この例を開始するには、sf_fitness_sfx_app
アプリを実行します。このアプリは、sf_fitness_interface
のチャート オブジェクトを作成します。一方、このチャートでは、この例で使用する他の 2 つのチャートのチャート オブジェクトを作成します。ヒューマン シミュレーターまた、このチャートは、チャートの心拍数に比例した頻度で 3 つのチャートすべてを実行する MATLAB timer
オブジェクトも作成します。例の実行中、1 秒間のシミュレーションは 1 分の運動時間を表します。この例を停止するには、アプリを閉じます。
チャートと MATLAB アプリとの接続
チャート sf_fitness_interface
は MATLAB アプリ sf_fitness_sfx_app
と通信するよう構成されています。
このチャートは、ローカル データ オブジェクト
app
を使用して、MATLAB アプリとのインターフェイスをとります。チャートは、補助関数updateStatus
、updateClock
、updateText
、updateSteps
、およびupdateHeartRate
を呼び出すときに、このローカル データ オブジェクトを使用します。アプリでは、これらの補助関数はアクティビティのステータス、時計、歩数計の各フィールドの内容を変更し、心拍と足跡のディスプレイのアニメーション効果を作成します。たとえば、フィットネス トラッカーからの新しい通知がある場合、サブステートMainDisplay
は補助関数updateText
を呼び出します。この関数は、時計の表示の内容を、カスタマイズされた通知に置き換えます。短い遅延の後、このサブステートは補助関数updateClock
を使用して時計の表示を復元します。
このアプリは
chart
というプロパティを使用して、チャートとのインターフェイスをとります。アプリはこのプロパティを使用して、チャートのローカル データを読み取ります。たとえば、補助関数updateHeartRate
およびupdateSteps
は、それぞれチャートのローカル データheart_rate
およびtotal_steps
を読み取ります。さらに、アプリを閉じると、UIFigureCloseRequest
コールバックはchart
プロパティを使用し、チャート オブジェクトを削除して、この例のチャートの実行を停止します。
MATLAB アプリとスタンドアロン Stateflow チャートの間で双方向接続を作成する方法については、Stateflow チャートを使用したヒューマンマシン インターフェイスのロジックの設計を参照してください。
ヒューマン シミュレーターとフィットネス トラッカー チャートとの間で通信を確立するため、sf_fitness_interface
チャートはチャート オブジェクトをローカル データ human
および tracker
として保存します。チャート レベルの MATLAB 関数 updateHuman
および updateTracker
はこれらのオブジェクトを使用して、チャートのローカル データの書き込みと読み取りを行います。たとえば、アプリの [Human Simulator] ペインで新しいアクティビティを選択したり、運動の強さを変更したりする場合、updateHuman
はヒューマン シミュレーター チャートのローカル データ activity
および intensity
の値を設定します。同様に、アプリの [設定] ペインのフィールドのいずれかで値を変更すると、updateTracker
はフィットネス トラッカー チャートで対応するローカル データの値を更新します。
アクティビティに基づくバイタル サインのシミュレーション
ヒューマン シミュレーター チャート sf_fitness_human
は、アプリで選択したアクティビティを実行している人のバイタル サインをモデル化します。このチャートは、これらのバイタル サイン (心拍数、速度、歩数を表します) を、フィットネス トラッカーがアクセスできるローカル変数として格納します。新しいアクティビティを選択したり、運動の強さを調整したりすると、チャートは関数 transition
を呼び出して、これらのバイタル サインが時間の経過に伴い次第に変化するようにします。アクティビティや運動の強さの変化を検出する場合、チャートはhasChanged
演算子を呼び出します。詳細については、データと式の値の変化の検出を参照してください。
フィットネス トラッカーの出力の判定
チャート sf_fitness_tracker
は、フィットネス トラッカーの中核のロジックをモデル化します。このチャートは、実行される可能性があるアクティビティに対応する 4 つのサブチャートで構成されています。このチャートは、ヒューマン シミュレーター チャートで生成された心拍数および速度と、これらのサブチャート間での遷移に基づいて、アクティビティのステータスを登録します。信号ノイズを除外するため、このチャートはcount
演算子を使用して単純なデバウンス ロジックを実装しています。たとえば、休息中に、運動ではないが、すばやい動作を突然行うことがあります。チャートは、チャート オブジェクトの評価 2 回分より長く動作が続いた場合にのみ歩行または運動を行っていると判定します。
チャートは他の時相論理演算子を使用して、各アクティビティに費やした時間を追跡し、アプリにいつ通知を送信するかを決定します。
参考
count
| elapsed
| hasChanged