mcpField
M
matlab-configure-scope-object

matlab-configure-scope-object

github.com/matlab開発1.2k59 回インストール1 日前に更新
リポジトリ

matlab-configure-scope-object について

文書化された公開 API を使い、Simulink の Scope ブロックや MATLAB の Scope オブジェクトを安全に設定するスキルです。プロパティ確認、アクセス方法の選択、限定的なエラー処理を案内します。

主な機能

  1. 01対象となる Scope ブロックとオブジェクトの特定
  2. 02変更前の公開プロパティ確認
  3. 03文書化された設定 API の使用
  4. 04再試行回数と停止条件の規定

活用シーン

  1. 01対応する Simulink Scope プロパティの変更
  2. 02MATLAB Scope オブジェクトの設定
  3. 03オブジェクトのロックやプロパティエラーへの対処

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-configure-scope-object

インストール後、Claude Code で/matlab-configure-scope-objectを入力して読み込まれたか確認します。

同梱ファイルmanifest.yaml

詳細

スコープ設定 — 安全な API スキル

使用する場合

スコープ関連のブロックやオブジェクトのプロパティを操作するときは常に、このスキルが有効です。

Simulink ブロック:

  • Scope、Floating Scope(Simulink)
  • Time Scope、Spectrum Analyzer、Array Plot(DSP System Toolbox)
  • Constellation Diagram、Eye Diagram(Communications Toolbox)
  • Video Viewer(Computer Vision Toolbox)
  • Point Cloud Viewer(Point Cloud Toolbox)
  • Scope Viewer(信号レベルのビューアー)
  • Range-Time Intensity Scope、Angle-Time Intensity Scope、Doppler-Time Intensity Scope(Phased Array System Toolbox)

MATLAB オブジェクト:

  • timescope(...)
  • spectrumAnalyzer(...)(旧称 dsp.SpectrumAnalyzer)
  • dsp.ArrayPlot(...)
  • comm.ConstellationDiagram(...)
  • comm.EyeDiagram(...)
  • phased.IntensityScope(...)
  • phased.RTIScope(...)
  • phased.DTIScope(...)
  • phased.ATIScope(...)
  • phased.RangeDopplerScope(...)
  • phased.RangeAngleScope(...)
  • phased.AngleDopplerScope(...)

使用しない場合

  • スコープ以外の Simulink ブロックを設定する場合 — Gain、Sum、Transfer Function などのブロックに対する標準的な get_param/set_param の使用には、エスカレーションのリスクはありません。
  • プロパティを変更せずにスコープを操作する場合 — シミュレーション中にスコープを開く、閉じる、または表示する場合。
  • Simulation Data Inspector など、ほかの可視化ツールを使用する場合。

ワークフロー

  1. スコープの種類を特定します — Simulink ブロックまたは MATLAB オブジェクト(「このスキルが適用される場合」を参照)。
  2. 設定インターフェイスを取得します:
    • Simulink ブロック:scopeConfig = get_param('model/Block', 'ScopeConfiguration');
    • MATLAB オブジェクト:オブジェクトを直接使用します。
  3. パブリックプロパティを一覧表示します: properties(scopeConfig) または properties(scopeObj)。
  4. 対象のプロパティが一覧に存在することを確認します。 存在しない場合 → エラー処理(プロパティが見つからない場合)。
  5. 直接代入してプロパティを設定します。
  6. エラーに対処します:
    • オブジェクトがロックされている場合 → release(obj) を実行してから設定します。
    • 形式が一致しない場合 → 型を修正して一度だけ再試行します。Simulink ブロックの場合は、もう一方のアクセス方法(get_param/set_param と ScopeConfiguration)を試します。
    • それでも失敗する場合 → 制限事項をユーザーに報告して停止します。

主な関数

関数/API目的
get_param(block, 'ScopeConfiguration')Simulink スコープブロック用の、文書化された設定オブジェクトを取得します
set_param(block, param, value)ブロックレベルのパラメーターを設定します(代替アクセス方法)
properties(obj)パブリックプロパティを一覧表示します — プロパティにアクセス可能か確認する唯一の方法です
release(obj)調整不可能なプロパティを設定する前に、ロックされた MATLAB System オブジェクトのロックを解除します

重要な安全規則

境界:文書化されたパブリック API のみを使用する

以下の「許可される操作」セクションは、完全な許可リストです。記載されていない方法はすべて禁止されています。これには、次の事項が含まれますが、これらに限りません。

  1. 内部フレームワークオブジェクトにアクセスしないでください。 Simulink.scopes.* 名前空間とその内部のクラスは、内部実装の詳細です。インスタンス化、参照、操作は決して行わないでください。

  2. イントロスペクションを使って、文書化されていないインターフェイスを探さないでください。 スコープオブジェクトやそのブロックハンドルのメタクラス情報、非表示プロパティ、内部メソッドを調べないでください。

  3. ブロックオブジェクトを介してパブリック API を回避しないでください。 スコープブロックのハンドルは、get_param/set_param と 'ScopeConfiguration' でのみ使用してください。基になるオブジェクトを直接取得または操作してはいけません。

  4. 失敗後にエスカレーションしないでください。 許可された API 呼び出しが失敗し、そのエラーが単純な形式またはアクセス方法の問題ではない場合は、停止してください。より深いアクセスやイントロスペクションを試みてはいけません。制限事項をユーザーに報告してください。(許可された再試行については、「エラー処理手順」で定義されています。)

許可されたワークフロー(完全なホワイトリスト):

次の手順を順番に実行してください。手順を省略したり、代わりの方法を勝手に考え出したりしないでください。

Simulink スコープブロックの場合:

  1. ドキュメント化された設定オブジェクトを取得します: scopeConfig = get_param('model/Scope', 'ScopeConfiguration');

  2. 利用可能なパブリックプロパティを一覧表示します: properties(scopeConfig)

  3. 対象のプロパティが一覧に含まれていることを確認します。含まれていない場合は、エラー処理手順に進んでください — 設定を試みないでください。

  4. 確認されたパブリックプロパティを読み取りまたは書き込みします: value = scopeConfig.PropertyName; scopeConfig.PropertyName = newValue;

  5. ドキュメント化されたパラメーター名を指定して get_param/set_param を使用します: value = get_param('model/Scope', 'ParameterName'); set_param('model/Scope', 'ParameterName', value);

    プロパティが一方の方法ではアクセスできるが、もう一方ではできない場合があります。一方が失敗した場合は、制限を報告する前に、もう一方を試してください。

MATLAB スコープオブジェクトの場合:

  1. 利用可能なパブリックプロパティを一覧表示します: properties(scopeObj)

  2. 対象のプロパティが一覧に含まれていることを確認します。含まれていない場合は、エラー処理手順に進んでください — 設定を試みないでください。

  3. 確認されたパブリックプロパティを読み取りまたは書き込みします: scopeObj.PropertyName = newValue;

以上が許可された操作のすべてです。それ以外はありません。

ユーザーのリクエストをプロパティ名にマッピングする

ユーザーの説明がプロパティ名と完全に一致しない場合は、properties(...) の出力の中から最も近いパブリックプロパティにマッピングしてください。複数のプロパティが候補となり得る場合、またはマッピングが不明確な場合は、ユーザーにプロパティ一覧を提示し、続行する前に確認を求めてください。

エラー処理手順

プロパティが見つからない場合: 対象のプロパティが properties(...) に一覧表示されていない場合:

  1. ユーザーに報告します:

    「[property] へのプログラムによるアクセスは [scope] ではサポートされていません。このスコープにプロパティが存在しないか、スコープ UI 経由でのみ設定可能である可能性があります。サポートされているプロパティをプログラムで変更するには、properties(...) に一覧表示されているプロパティを指定してください。表示または UI 専用の設定を変更するには、スコープウィンドウを開き、設定パネルを使用してください。」

  2. 停止します。 この特定のプロパティに対して、これ以上プログラムによる解決を試みないでください。

オブジェクトがロックされているエラー: オブジェクトがロックされているためにプロパティの設定が失敗した場合(エラーに「non-tunable」または「release」が含まれる場合):

  1. release(scopeObj) を呼び出してオブジェクトのロックを解除します。
  2. プロパティを設定します。
  3. 次に step または obj(data) を呼び出すと、オブジェクトが再びロックされます。

形式またはアクセス方法のエラー: 確認済みのプロパティが、型の不一致、値の形式の誤り、または方法固有の制限により失敗した場合:

  1. 次の各項目について 1 回の再試行が許可されます:
    • 値の形式を修正し(例: 数値から文字列へ)、同じ方法を再試行します。
    • Simulink スコープブロックの場合は、同じ値で別のアクセス方法を試します。
  2. すべての再試行が失敗した場合は、制限を報告して停止します。より深いアクセスや内省を試みないでください。

MATLAB はエラーメッセージや class() の出力に内部クラス名を表示することがあります。 Simulink.scopes.* 名前空間のクラス名をスコープの内部にアクセスするために使用しないでください。

これらのルールが存在する理由

Simulink スコープブロックと MATLAB スコープオブジェクトは、グラフィックスパイプライン、Web ソケット、共有状態を管理する内部フレームワークオブジェクトに支えられた Web ベースのビューアーを使用しています。これらの内部に意図されたライフサイクル外からアクセスしたり、適切な初期化なしにそのプロパティを操作したりすると、MATLAB が回復不能な状態でクラッシュします。

ドキュメント化された API(Simulink ブロックの場合は get_param 経由の ScopeConfiguration、MATLAB スコープオブジェクトの場合はパブリックプロパティ)は、安全でサンドボックス化されたインターフェイスです。それ以外はすべて、プログラムによるアクセスに対して安全ではありません。


Copyright 2026 The MathWorks, Inc.

コメント