authoring-simulink-inputs について
Simulink モデル向けの合成入力信号を生成するスキルです。`createInputDataset` で Dataset を作成し、信号メタデータを保ちながら入力端子に波形を設定します。MATLAB コードとデータセットを出力しますが、シミュレーションの実行や既存ファイルの読み込みは行いません。
主な機能
- 01合成入力波形の生成
- 02Simulink Dataset の入力設定
- 03信号メタデータと型の維持
- 04timeseries と timetable に対応
- 05MATLAB コードと概要の出力
活用シーン
- 01ランプまたは正弦波入力の作成
- 02Signal Editor シナリオの準備
- 03ゼロ値の雛形データの置き換え
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ simulink-agentic-toolkit --skill authoring-simulink-inputsインストール後、Claude Code で/authoring-simulink-inputsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
manifest.yamlreferences/dataset-patterns.mdsignal-patterns.md詳細
作成者入力信号
createInputDataset をひな形として使用し、すべての信号メタデータを保持しながら、意味のある波形を設定して Simulink モデル用の入力信号データセットを作成します。
使用する場面
- ユーザーが、モデルの入力ポート向けに合成波形(ステップ、ランプ、正弦波、チャープ、パルス、ノイズ、定数)の生成または作成を依頼した場合
- ユーザーが、
createInputDatasetで作成した Dataset に意味のある信号データを設定したい場合 - ユーザーが、Signal Editor シナリオ用の信号を必要としている場合
- ユーザーが、自然言語で入力信号の動作を説明した場合(例:「0 から 10 までのランプ」、「5 Hz の正弦波」)
- ユーザーが、入力ポート向けにtimetable ベースの入力信号を必要としている場合
- ユーザーが、関数呼び出しのタイミングを設定するか、トリガー/イネーブル入力ポートの信号を構成する必要がある場合
- ユーザーが、ゼロで埋められたひな形のデータを現実的な波形に置き換えたい場合
使用しない場面
- ユーザーがモデルのシミュレーション、実行、または出力のプロットを希望している場合 — 代わりに
simulating-simulink-modelsを使用してください。このスキルは入力データを作成するだけで、sim()を実行したりプロットを生成したりすることはありません。 - ユーザーが既存のファイル(CSV、MAT、スプレッドシート、.mat ワークスペース)からデータを読み込み、インポート、または読み取りたい場合 — 保存先がモデルの入力ポートであっても同様です。このスキルは新しい合成波形をゼロから生成するものであり、既存の記録データや測定データを読み取ったり変換したりするものではありません。
出力
このスキルは次のものを生成します。
- MATLAB コード — Dataset を生成して返すローカル関数(再現可能で編集可能。ワークスペースをクリーンに保ちます)
- Dataset 変数(
ds) — シミュレーションですぐに使用できる、データが設定済みのSimulink.SimulationData.Datasetがベースワークスペースに作成されます - 概要 — 各要素の名前、データ型、波形形状、値の範囲を簡潔に説明します
Dataset を使ってシミュレーションするには、simulating-simulink-models スキルのワークフロー(SimulationInput → setExternalInput → sim)に従ってください。
必ず守るルール
createInputDatasetから開始し、呼び出しは正確に 1 回だけにする — Dataset をゼロから構築してはいけません。モデルごとにcreateInputDatasetを 1 回呼び出します(ダイアグラムの更新が実行されます)。複数の Dataset を作成する場合は、createInputDatasetを再度呼び出すのではなく、返されたひな形をループ内で複製してください- ひな形のメタデータを保持する — 新しい timeseries はすべて
origEl.DataInfo.InterpolationとorigEl.DataInfo.Unitsをコピーする必要があります。timetable の場合は、origEl.Properties.VariableContinuityをコピーしてください。これらを省略するとバグになります - 要素はその場で置き換える — timeseries の場合:
ds{k} = ts。timetable の場合:ds = ds.setElement(k, tt, origEl.Properties.Description)—addElementは決して使用しないでください - データ型を尊重する — ひな形の型(double、single、整数、固定小数点)に合わせるには、
cast(data, 'like', origEl.Data)を使用してください。boolean 入力ポートにはtrue(size(t))を直接使用してください - 補間を正しく設定する — 連続信号(正弦波、ランプ、チャープ)には線形補間を、離散信号(ステップ、パルス、boolean、整数、ノイズ)にはゼロ次ホールドを使用してください。ひな形の補間設定は入力ポートの
Interpolateプロパティを反映しているため、信号の性質から別の設定が必要な場合を除き、そのまま保持してください - 生成ロジックはすべて関数内に収める — ベースワークスペースに残す変数は Dataset(シミュレーションする場合は
simIn/simOutも)だけにしてください。中間変数(t、dt、origEl、ts、signalData、k)はすべて関数スコープ内に置いてください - ユーザーデータを破壊しない —
clear、clearvars、clear all、bdclose allは決して呼び出さないでください。ユーザーは既存の変数、モデル、または図を開いている可能性があります。ワークスペースから何も削除せず、追加だけを行ってください
ワークフロー
開始地点を判断します。 常にステップ 1 から始める必要はありません。ユーザーがすでに用意しているものを確認してください。
| ユーザーの現在の状態 | 開始地点 |
|---|---|
| 既存の Dataset もスクリプトもなく、新規に開始する | ステップ 1 |
| Dataset 変数はあるが、空またはひな形(すべてゼロ、またはプレースホルダーデータ)である | ステップ 2 |
| 一部の信号が入力された Dataset はあるが、修正が必要(形状、データ型、補間が間違っている) | ステップ 2 — 問題のある要素を確認し、その場で修正する |
| 動作するスクリプトはあるが、シナリオや信号を追加したい | ステップ 2 または「複数の Dataset の作成」 |
| 完成した Dataset はあるが、シミュレーションが失敗する | まずエラーを診断する — 多くの場合、メタデータの不一致(補間、データ型、単位)が原因で、ステップ 2 で修正できます |
スキャフォールドとは、createInputDataset が返す Dataset です。各インポートに 1 つの要素が含まれており、正しいメタデータ(データ型、補間方法、単位、信号次元)が事前に設定されていますが、時間サンプルはプレースホルダー(通常は値がゼロの 2 行)のみです。このワークフローでは、メタデータを保持したまま、プレースホルダーデータを意味のある波形に置き換えます。
1. スキャフォールドを作成する(関数内)
データ生成コードはすべてローカル関数に記述します。呼び出し元は関数を呼び出し、データが入力された Dataset を受け取ります。
ds = buildInputs('modelName');
function ds = buildInputs(mdl)
ds = createInputDataset(mdl);
% — or timetable format —
% ds = createInputDataset(mdl, 'DatasetSignalFormat', 'timetable');
stopTime = str2double(get_param(mdl, 'StopTime'));
dt = 0.01;
t = (0:dt:stopTime)';
% ... populate elements (Step 2) ...
end
createInputDataset が失敗する場合(モデルをコンパイルできない場合)は、model_read を使用してモデルのインポートブロックを確認し、モデル構造から判断できない型や次元の情報についてユーザーに尋ねます。
2. 各要素にデータを入力する(同じ関数内)
メタデータを保持したまま、スキャフォールドのプレースホルダーデータを意味のある信号波形に置き換えます。各要素に対して、次の手順を実行します。
- 元の要素を取り出します(
origEl = ds{k})。 - 波形を生成し、
cast(data, 'like', origEl.Data)で型変換します — 固定小数点を含むすべての型で動作します。 - 新しい timeseries または timetable を作成します。
origElからDataInfo.InterpolationとDataInfo.Units(timeseries の場合)、またはVariableContinuity(timetable の場合)をコピーします。- インプレースで置き換えます。timeseries の場合は
ds{k} = ts、timetable の場合はds = ds.setElement(k, tt, origEl.Properties.Description)を使用します。
完全なコードパターンについては、references/signal-patterns.md の「Dataset Assembly」セクションを参照してください。
複数の Dataset の作成
createInputDataset を一度呼び出し、関数内のループでスキャフォールドを複製します。完全なパターンについては、references/dataset-patterns.md の「Creating Multiple Datasets」セクションを参照してください。
バス信号インポート
モデルにバス信号インポートがある場合は、references/dataset-patterns.md の「Bus Signal Inports」セクションを参照してください。
関数呼び出しインポート
モデルに関数呼び出しインポートがある場合は、references/dataset-patterns.md の「Function-Call Inports」セクションを参照してください。
信号の種類
波形生成コード(正弦波、ステップ、ランプ、チャープ、パルス、ノイズ、定数、列挙型)については、references/signal-patterns.md を参照してください。
補間と連続性(明示的に設定 — スキャフォールドを上書きする場合のみ使用)
| 信号の性質 | timeseries | timetable |
|---|---|---|
| 連続(正弦波、ランプ、チャープ) | tsdata.interpolation('linear') | "continuous" |
| 離散(ステップ、パルス、ブール値) | tsdata.interpolation('zoh') | "step" |
ガードレール
| 誤り | 問題である理由 | 正しい方法 |
|---|---|---|
ブール型の有効化に ones(size(t)) を使用する | double 型が作成され、型の不一致でシミュレーションが失敗します | true(size(t)) を使用します |
| バスのスキャフォールドで構造体のフィールドを無視する | バス要素が欠けているか、型が正しくないため、シミュレーションエラーが発生します | 各フィールドのメタデータを保持しながら、構造体のすべてのフィールドに値を設定します |
| スキャフォールドのデータ行を信号幅として扱う | スキャフォールドの [2 1] データは、2 要素のベクトルではなく、スカラーの時刻サンプルが 2 つあることを意味します | 信号幅には size(origEl.Data, 2) を使用します。行はプレースホルダーの時刻サンプルです |
| 列挙型データで「補間をオフにする」エラーが発生する | Simulink では、timeseries で zoh が設定されていても、列挙型データを受け取る Inport ブロックに Interpolate='off' が必要です | これはデータではなくモデルの修正です。シミュレーションの前に simIn.setBlockParameter(portPath, 'Interpolate', 'off') を使用します |
Copyright 2026 The MathWorks, Inc.