matlab について
MATLAB と GNU Octave の数値コードの設計・レビュー、再現可能なプロジェクトの計画、安全な実行の検討を支援するスキルです。静的解析用ヘルパーに加え、互換性、ライセンス、テスト、データの扱いに関する指針を含みます。
主な機能
- 01MATLAB と Octave の互換性ガイド
- 02.m コードの静的スキャン
- 03MAT ファイルのメタデータ調査
- 04再現性と来歴のレポート
- 05コマンド計画と関数ひな形の生成
活用シーン
- 01コードを実行せずに数値コードをレビュー
- 02MATLAB または Octave のバッチ実行を計画
- 03プロジェクトの依存関係とライセンスを確認
- 04再現可能な数値実験を準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill matlabインストール後、Claude Code で/matlabを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/project_manifest_template.jsonpython_compatibility_r2026a.jsonreproducibility_manifest_template.jsonreferences/data-import-export.mdexecuting-scripts.mdgraphics-visualization.mdmathematics.mdmatrices-arrays.mdoctave-compatibility.mdprogramming.mdpython-integration.mdscripts/_common.pygenerate_function_scaffold.pyinventory_mat_file.pyplan_batch_command.pyplan_python_compatibility.pyreproducibility_report.pyscan_m_code.pyvalidate_project_manifest.py詳細
MATLAB と GNU Octave
数値コードの設計やレビュー、MATLAB リリース間の移行、再現可能なプロジェクトの準備、信頼できる実行の計画にこのスキルを使用します。MATLAB と GNU Octave は別々の製品です。互換性は部分的なものであり、ライセンスや動作を保証するものではありません。
製品とライセンスの確認
- MATLAB R2026a はプロプライエタリです。 MATLAB、MATLAB Online、特定のツールボックス、MATLAB Test、MATLAB Compiler、MATLAB Coder、Parallel Computing Toolbox、またはアドオンがインストール済みで、ライセンスがあり、ユーザーが利用できるとは想定しないでください。
- MATLAB Runtime は MATLAB ではありません。 MATLAB Compiler で作成された互換アプリケーションを実行しますが、任意のソースを実行したり、MATLAB Engine for Python をホストしたりすることはできません。アーティファクトのビルドには、該当するライセンス済みコンパイラーと、ソースで使用されているすべての製品が必要です。
- GNU Octave 11.3.0 は GPLv3+ の下で提供されるフリーソフトウェアです。 Octave のパッケージは MATLAB のツールボックスではありません。名称が似ていても、API、数値処理、グラフィックス、ライセンスの同等性を意味するものではありません。
- 実際に使用できるランタイム、リリース、プラットフォーム、インストール済み製品、ライセンスの状況をユーザーに確認してください。確認が取れるまでは、利用可否を
unknownとして扱ってください。
Octave の互換性と 実行と製品の境界を参照してください。
妥協できない安全上の境界
信頼できない .m、.mlx、MEX バイナリ、MAT ファイル、プロジェクトの起動または終了時のアクション、パッケージインストーラー、生成されたアーティファクトは、決して実行しないでください。静的レビューだけでは安全性を証明できません。
次のものは、実行またはコード読み込みの対象として扱ってください。
eval、evalin、assignin、テキスト由来のfeval、str2func、コールバック、タイマー、アプリのコールバック、動的に変更されるパス。system、unix、dos、シェルエスケープ!、Java、.NET、Python(py.*、pyrun、pyrunfile)、MEX、ネイティブライブラリ。mex、codegen、MATLAB Compiler、ビルドタスク、パッケージまたはプロジェクトの起動処理、生成されたコード。load、オブジェクトのデシリアライズ(loadobj、カスタムシリアライズ)、関数ハンドル、Java/System オブジェクト、MAT ファイルから到達可能なクラスコード。
.mlx はこのツールキットでは不透明なアーカイブであり、MEX はネイティブの実行可能コードです。データ交換に Python の pickle を使用しないでください。まず検査し、適切な場合は隔離し、明示的な承認を得たうえで、ユーザーが確認した実行ファイルとライセンスを使って実行してください。同梱スクリプトは静的ツールまたはドライラン用ツールであり、MATLAB、Octave、Python Engine、コンパイラー、サブプロセスを起動するものはありません。
デフォルトのワークフロー
- 対象を明確にします。 MATLAB のリリースまたは Octave のバージョン、OS/アーキテクチャ、基本製品と必要なツールボックス/パッケージの区別、想定される入力/出力、数値許容誤差、実行が許可されているかどうかを記録します。
- 静的にインベントリを作成します。 ランタイムで読み込む前に、
.mファイル、不透明なアーティファクト、プロジェクトパス、必要な製品、MAT ヘッダーを調べます。 - コード形式を選択します。 自動化には
argumentsブロックを含む関数を優先します。スクリプトは管理されたオーケストレーションにのみ使用し、ライブスクリプトはレビュー済みの対話的な説明に使用します。 - セマンティクスを明確にします。 形状、クラス、単位、欠損値の規則、インデックス付け、暗黙の拡張、RNG アルゴリズム/シード、許容誤差、出力形式を記録します。
- 隠れた状態なしでテストします。 フィクスチャは合成データにし、パスはプロジェクト内に限定し、グラフィックスは決定論的にし、テストは基本ワークスペースの残存状態に依存しないようにします。
- 実行を計画します。 argv プランを生成し、起動やパスへの影響とライセンスを確認してから、これらのヘルパーの外部で明示的な承認を得た後にのみ起動します。
- 来歴を記録します。 名前付きの入力/コードをハッシュ化し、環境全体をダンプせずに、リリース、製品、RNG ポリシー、許容誤差、コマンドプランを記録します。
言語とデータのチェックリスト
スクリプト、関数、ライブスクリプト
- スクリプトは呼び出し元/ベースワークスペースを共有し、変数を残します。 関数にはローカルワークスペースがあり、入力と出力を明示します。
- ライブスクリプト(
.mlx)はコードとリッチ出力を組み合わせますが、プレーンテキストの レビュー用成果物ではありません。レビュー済みのコードは静的検査用に.mへエクスポートしてください。 clear all、広範なaddpath(genpath(...))、pwdへの依存、グローバル 変数、気付かない名前のシャドーイングは避けてください。プロジェクトルートとfullfileを使用してください。argumentsブロックでサイズ、クラス、値を検証してください。 型宣言によって入力が変換される場合がある点に注意してください。バリデーターは変換せずにチェックします。- メイン関数ファイルの名前は、メイン関数の名前と一致させてください。ローカル関数は ファイル内でプライベートです。R2024a 以降は、条件付きコンテキストの外であれば、スクリプト内のどこにでも配置できます。
function y = scaleSignal(x, options)
arguments
x (:,1) double {mustBeFinite}
options.Scale (1,1) double {mustBeFinite, mustBeNonzero} = 1
end
y = x .* options.Scale;
end
プログラミングをお読みください。
配列、インデックス付け、数値計算
- MATLAB では、インデックスは 1 始まりで、列優先です。
A(i,j)、A(k)、A(:,j)、A{...}、A.(name)はそれぞれ意味が異なります。 *、/、\、^は行列演算です。ドット付きの形式は要素ごとの演算です。inv(A)*bではなくA\bを使用してください。- R2016b 以降、互換性のある次元は暗黙的に拡張されます。意図せず外積のような結果が生成される可能性のある演算の前に、想定した形状であることを確認してください。
- 出力サイズが分かっている場合は事前割り当てを行いますが、巨大な一時配列や読みにくいコードを生むようなベクトル化は避けてください。
timeitまたはプロファイラーで測定してください。 - 浮動小数点の結果は、
==や根拠のないepsの倍数ではなく、用途に応じて選んだ絶対許容誤差と相対許容誤差で比較してください。 - 乱数アルゴリズムとシードの両方を固定してください。独立した並列処理には名前付きの
RandStreamサブストリームを使用してください。再現性を主張する場合、時刻に基づくrng("shuffle")は使用しないでください。
テーブル、タイムテーブル、欠損値
tableは、異なる型を使用できる、名前付きで高さが等しい変数を持ちます。T(rows,vars)はテーブルを返し、T{rows,vars}は内容を抽出し、T.Varは 1 つの変数を選択します。timetableにはさらに行時刻があります。並べ替え、タイムゾーンと一意性の検証を行ってから、意図に沿ってretime/synchronizeを使用してください。- 欠損値の代替値は型ごとに異なります。
NaN、NaT、<missing>、<undefined>、空の文字ベクトルなどです。整数配列と論理配列には、標準の欠損値代替値がありません。 - 本番データでは、推論に頼らずインポートオプションを定義してください。単位、タイムゾーン、変数名、エンコーディング、欠損値のルールを保持してください。
データのインポート/エクスポートをお読みください。
グラフィックスとエクスポート
明示的な Figure/Axes ハンドルと tiledlayout を使用し、単位をラベル付けしてください。軸の範囲、
カラースケール、フォントサイズ、カラーマップは意図を持って設定してください。出版用の出力には、saveas より exportgraphics を優先してください。R2026a では、ラスター、PDF/EPS/EMF、
SVG、GIF、インタラクティブ HTML にエクスポートできますが、形式によって機能は異なります。適切な PDF/SVG 形式の出力には
ContentType="vector" を、ラスター出力には Resolution を指定してください。アクセシビリティと埋め込みラスターの動作を確認してください。
グラフィックスとエクスポートをお読みください。
MAT ファイルとデータ交換
- バージョン 7 は通常の
saveの既定値です。matfileは既定で 7.3 を作成します。 バージョン 4/6/7/7.3 では、対応する型、圧縮、変数ごとのサイズ上限が異なります。 - バージョン 7.3 は HDF5 ベースですが、任意の HDF5 データ交換契約ではありません。 大きな配列には部分アクセスとチャンク化が役立つことがあります。
- 信頼できない MAT ファイルは決して読み込まないでください。まずヘッダー/データセットの一覧を確認してください。オブジェクトはクラスのデシリアライズ動作を呼び出す場合があります。不透明なコンテンツ、関数コンテンツ、ネイティブコンテンツにはエスカレーションが必要です。
- 単純なデータ交換には、スキーマを文書化した CSV/JSON/Parquet/HDF5 を優先してください。 pickle のペイロードを MAT ファイルとして名前を変更してはならず、pickle をデシリアライズしてもいけません。
データのインポート/エクスポートをお読みください。
プロジェクト、解析、テスト
- 制御されたパス、起動/終了タスク、依存関係、ソース管理、再現可能なエントリーポイントには、MATLAB Projects を使用します。信頼できないプロジェクトを開く前に、プロジェクトのアクションを確認してください。
matlab.codetools.requiredFilesAndProductsと Dependency Analyzer は静的な近似です。動的ディスパッチによって見落としや誤検出が生じることがあります。必要な製品のレポートは、ライセンスが利用可能であることを証明するものではありません。- 移行前に Code Analyzer(
codeIssues。従来のテキストベースのワークフローではcheckcodeを使用できます)とcodeCompatibilityReportを使用します。 - MATLAB の基本機能には、スクリプトベース、関数ベース、クラスベースの
matlab.unittestワークフローが含まれます。並列実行には Parallel Computing Toolbox が必要です。依存関係に基づく選択、より高度な品質ダッシュボード、テストの生成、高度なカバレッジ/等価性機能には、MATLAB Test やその他の製品が必要になる場合があります。 - R2026a の
runtestsは、対象のテストが、まだ開かれていないプロジェクトに属している場合、プロジェクトを自動的に開き、後で閉じます。この動作を使用する前に、起動/終了アクションを考慮してください。
R2026a に固定した Python 連携
- R2026a は、MATLAB Interface to Python、MATLAB Engine for Python、MATLAB Compiler SDK for Python で、64 ビット版 CPython 3.9~3.13 をサポートしています。
- ここで確認した現行の R2026a PyPI パッケージは
matlabengine==26.1.12(リリース日:2026-05-08)です。インストール済みの R2026a が必要です。MATLAB Runtime だけでは不十分です。R2026a には、名前付きのmatlabrootパスの下に、事前インストール済みの Engine ディストリビューションも含まれています。 - パッケージをインストールしても、MATLAB やツールボックスのライセンスは付与されません。名前付きのインタープリター/実行可能ファイルを 1 つ設定してください。環境全体、
PATH、PYTHONPATH、認証情報を出力しないでください。 pyenvは、MATLAB から Python へのインタープリター選択を制御します。インプロセスの Python に切り替えるには、通常 MATLAB の再起動が必要です。アウトオブプロセスの Python は終了して再設定できます。- Engine の起動は明示的な実行アクションです。
matlab.engine.start_matlab()は MATLAB プロセスを起動し、ライセンスをチェックアウトする場合があります。利用可能かどうかを調べるだけの目的では、絶対に呼び出さないでください。 - NumPy 配列、pandas DataFrame、テーブル/タイムテーブル、文字列/欠損値、datetime/duration、辞書、形状/順序、およびサポートされない疎行列/オブジェクト/カテゴリカルのケースについて、変換の意味を検証してください。
Python 連携をお読みください。
ローカルヘルパー CLI
すべてのヘルパーはネットワークを使用せず、処理範囲が制限され、シンボリックリンクを拒否し、実行を行いません。Python 3.11 以降を使用して、このスキルのディレクトリから実行してください。Bash は、これらの Python CLI と検証コマンドの呼び出しに限り使用できます。生成された MATLAB/Octave の argv プランや信頼できないアーティファクトの実行には使用しないでください。
| ヘルパー | 目的 |
|---|---|
scripts/plan_batch_command.py | レビュー用の MATLAB/Octave argv を生成します。実行はしません |
scripts/scan_m_code.py | .m テキストをスキャンし、不透明な .mlx/MEX のリスクにフラグを立てます |
scripts/validate_project_manifest.py | パスと、宣言された製品/ライセンスの状態を検証します |
scripts/inventory_mat_file.py | ヘッダー/メタデータのインベントリを作成します。loadmat は呼び出しません |
scripts/plan_python_compatibility.py | R2026a の CPython/Engine 互換性を確認します |
scripts/reproducibility_report.py | 名前付きのローカルアーティファクトをハッシュ化し、範囲を限定したレポートを出力します |
scripts/generate_function_scaffold.py | 関数と単体テストのスキャフォールドをドライランまたは作成します |
python scripts/scan_m_code.py path/to/source --root path/to/project
python scripts/plan_batch_command.py matlab script path/to/main.m --root path/to/project
python scripts/validate_project_manifest.py project-manifest.json --root path/to/project
python scripts/inventory_mat_file.py data.mat --root path/to/project
python scripts/plan_python_compatibility.py --python-version 3.13
python scripts/reproducibility_report.py --root path/to/project --file src/analyze.m
python scripts/generate_function_scaffold.py analyzeSignal --root path/to/project
スキャフォールドジェネレーターは、デフォルトでドライランを実行します。書き込みには --write が必要で、既存ファイルとの衝突がある場合は拒否します。SciPy と h5py は任意のインベントリ用バックエンドです。使用が許可されている場合は、レビュー済みの正確なバージョンを呼び出し元のプロジェクトのロックファイルに追加してください。--help やヘッダーのみのインベントリには不要であり、このスキルはパッケージのインストールを行いません。
リファレンス
- プログラミング、ワークスペース、プロジェクト、解析、テスト
- 行列、インデックス付け、型、欠損値、パフォーマンス
- 数値計算法、許容誤差、RNG、ツールボックスの境界
- グラフィックスと
exportgraphics - インポート/エクスポート、テーブル/タイムテーブル、MAT の仕様と安全性
- MATLAB/Octave のコマンドライン実行と移行
- MATLAB と Python の相互運用性
- GNU Octave 11.3.0 の互換性に関する相違点
同梱の JSON アセットは、プロジェクトマニフェスト、
再現性マニフェスト、および
R2026a Python テーブルです。templates/ ディレクトリはなく、
assets/ から読み込まれる Markdown ファイルもありません。
ローカルリンクテストにより、このパッケージの契約を検証しています。