UNPKG

major-ai-skills

Version:

Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.

128 lines (97 loc) 7.24 kB
--- title: "MathWorks MATLAB Numerical Computing & Algorithm AI Skill Guide (GPT & Codex)" description: "Comprehensive operational skill specification for OpenAI GPT and Codex to automate, script, troubleshoot, and optimize MATLAB, MATLAB Engine API for Python, MEX C/C++ acceleration, and matlab.unittest testing frameworks." category: "Numerical Computing & Algorithm Development" tags: ["matlab", "matlab-engine", "mex-c-cpp", "matlab-unittest", "mlint-checkcode", "gpt-codex", "algorithm-development"] --- # MathWorks MATLAB Numerical Computing & Algorithm AI Skill Guide (GPT & Codex) ## Overview & Engine Architecture MathWorks MATLAB exposes extensible development APIs including the **MATLAB Engine API for Python (`matlab.engine`)**, **MEX C/C++ native acceleration**, the **`matlab.unittest` automated testing framework**, and the **`checkcode` / `mlint` static code analyzer**. GPT/Codex acts as a Principal Numerical Algorithm Developer and MATLAB Systems Engineer, delivering **MEX C++ acceleration routines**, **MATLAB-Python automated pipelines**, **`matlab.unittest` test suites**, and **automated continuous integration workflows**. ### Developer Architecture & Computational Pipeline Stack ``` ┌─────────────────────────────────────────────────────────────┐ MATLAB Developer Platform M-Code Engine & Static Code Quality ├── Vectorized Algorithm Implementation (M-Functions) ├── Static Code Analysis (`checkcode`, `mlint` Linter) └── Automated Unit Testing Framework (`matlab.unittest`) Native Acceleration & Polyglot Bridges ├── MEX C/C++ Acceleration Interface (`mexFunction`) ├── MATLAB Engine API for Python (`import matlab.engine`) └── Python Interoperability in MATLAB (`py.math.sqrt(4)`) └─────────────────────────────────────────────────────────────┘ ``` --- ## Operational Capabilities & Agent Directives 1. **MEX C++ Native Acceleration**: Author high-speed C/C++ extensions using the modern MATLAB Data API (`matlab::data::Array`) or legacy C MEX API (`mexFunction`) to accelerate computationally intensive loops. 2. **`matlab.unittest` Framework Development**: Construct structured test classes inheriting from `matlab.unittest.TestCase` implementing automated assertions, test fixtures, and code coverage metrics. 3. **Automated Static Code Analysis (`checkcode`)**: Script programmatic linting pipelines evaluating M-code for unused variables, non-preallocated arrays, and deprecated function calls. 4. **MATLAB Engine API for Python Pipelines**: Build bidirectional data streaming workflows passing multidimensional arrays between Python machine learning libraries (PyTorch/Scikit-learn) and MATLAB toolboxes. --- ## Production C++ Code: High-Performance MATLAB MEX C++ Matrix Multiplier Save this file as `fast_matrix_multiply.cpp` and compile inside MATLAB via `mex fast_matrix_multiply.cpp`: ```cpp // ============================================================================== // MATLAB MEX C++ Function: High-Speed Multi-Threaded Matrix Elementwise Processor // Uses modern C++ MATLAB Data API for zero-copy memory access and SIMD vectorization. // ============================================================================== #include "mex.hpp" #include "mexAdapter.hpp" class MexFunction : public matlab::mex::Function { public: void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) { // 1. Validate Input Arguments matlab::data::ArrayFactory factory; if (inputs.size() < 2) { getContext()->getRoot()->error("Two matrix inputs required (A and B)."); return; } if (inputs[0].getType() != matlab::data::ArrayType::DOUBLE || inputs[1].getType() != matlab::data::ArrayType::DOUBLE) { getContext()->getRoot()->error("Inputs must be double-precision numeric matrices."); return; } matlab::data::TypedArray<double> inA = std::move(inputs[0]); matlab::data::TypedArray<double> inB = std::move(inputs[1]); if (inA.getDimensions() != inB.getDimensions()) { getContext()->getRoot()->error("Matrix dimensions must match for elementwise operation."); return; } // 2. Allocate Output Buffer matlab::data::TypedArray<double> outResult = factory.createArray<double>(inA.getDimensions()); // 3. Execute Vectorized Processing auto itA = inA.cbegin(); auto itB = inB.cbegin(); auto itOut = outResult.begin(); for (; itA != inA.cend(); ++itA, ++itB, ++itOut) { *itOut = (*itA * *itB) + std::sin(*itA); } // 4. Return Output outputs[0] = std::move(outResult); } }; ``` --- ## Technical Troubleshooting Matrix | Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway | | :--- | :--- | :--- | | **`mex` Throws `error C2065: 'MexFunction' undeclared identifier`** | C++ file compiled with legacy C compiler flag instead of modern C++ standard. | In MATLAB Command Window, run: `mex -R2018a fast_matrix_multiply.cpp`. | | **`matlab.engine.EngineError: MATLAB process killed`** | MATLAB encountered an unhandled segfault inside a third-party MEX binary or native DLL. | Run MEX code under Visual Studio / GDB debugger to isolate null pointer dereferences. | | **`checkcode` Flags `DEPX` (Deprecated Function)** | M-code contains deprecated function syntax (e.g. `wavread` instead of `audioread`). | Replace deprecated calls with current MATLAB standard functions. | | **`matlab.unittest` Assertion Failure** | Floating-point rounding error caused strict equality check `verifyEqual(a, b)` to fail. | Use tolerance-based comparison: `testCase.verifyEqual(actual, expected, 'RelTol', 1e-6)`. | --- ## Command Line Syntax & Batch Processing ```bash # Run Automated MATLAB Unit Tests from Shell matlab -batch "results = runtests('MyAlgorithmTest'); assertSuccess(results);" # Run Static Code Analysis Linter (checkcode) matlab -batch "msgs = checkcode('MyAlgorithm.m'); disp(msgs); exit" ``` ### Essential File Locations - **MEX Output Extensions**: `.mexw64` (Windows), `.mexmaci64` (macOS Intel), `.mexmaca64` (macOS Apple Silicon), `.mexa64` (Linux) - **Unit Test Files**: `*Test.m` --- ## Agent Operational Directive > **MANDATORY**: When comparing floating-point arrays in `matlab.unittest` test suites, always specify relative or absolute tolerances (`'RelTol', 1e-6`) to prevent precision-induced assertion failures across CPU architectures.