Matlab Optimize Memory
MathWorksOfficialCreated by MathWorks
- Skill
- Workflow
- Science and research
- BSD-2-Clause
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured methodology for optimizing memory usage in MATLAB. It guides users through a rigorous process of establishing a baseline, profiling allocations, identifying specific memory-intensive patterns, implementing optimizations, and verifying results. The approach emphasizes data-driven decision-making, requiring users to measure performance before and after changes to ensure both memory efficiency and numerical correctness.
What it does
- Establishes a memory usage baseline for MATLAB functions
- Profiles memory allocations to identify specific hotspots
- Provides a library of memory-efficient coding patterns
- Guides the implementation of optimizations like preallocation and implicit expansion
- Includes verification steps to ensure optimized code produces identical results
- Offers cross-platform strategies for memory monitoring on Windows, Linux, and macOS
When to use it
- When encountering out-of-memory errors during execution
- When a program's memory footprint needs to be reduced
- When processing large datasets that exceed available system memory
- When profiling code to find memory-intensive bottlenecks
Advantages
- Prevents premature optimization by requiring profiling first
- Ensures numerical integrity through mandatory verification
- Provides actionable, pattern-based solutions for common memory issues
- Offers platform-specific guidance for memory monitoring
Usage examples
- “How do I fix an out-of-memory error in my MATLAB script?”
- The agent will guide you through the 7-step workflow, starting with establishing a baseline and profiling the code to identify the specific function or loop causing the memory spike.
- “My code is slow and uses too much memory, what should I do?”
- The agent will clarify if the primary issue is memory or speed, then direct you to use the memory profiling steps to isolate allocations before applying specific patterns like cell collection or implicit expansion.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/matlab/matlab-optimize-memory/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip matlab-optimize-memory.zip -d .agents/skills
Documentation by MathWorks
MATLAB Memory Optimization Workflow
Systematic 7-step workflow for finding and fixing memory bottlenecks in MATLAB code.
When to Use
User gets out-of-memory errors running MATLAB code
User wants to reduce memory usage of their MATLAB program
User wants to process larger datasets without running out of memory
User asks to profile or measure memory allocations
When NOT to Use
The bottleneck is execution speed, not memory (use
matlab-optimize-performance)The memory issue is in compiled C/MEX code that can't be changed at the M-code level
Memory usage is dominated by I/O buffers (memory-mapped files, database connections)
The 7-Step Workflow
Step 1: Establish Memory Baseline
Measure current memory usage before making changes.
m0 = memory;
targetFunction(inputs);
m1 = memory;
deltaBytes = m1.MemUsedMATLAB - m0.MemUsedMATLAB;
fprintf('Memory delta: %.2f MB\n', deltaBytes / 1e6);When memory errors (Linux/macOS), use whos for variable sizes or Java runtime for heap:
info = whos('result');
fprintf('Variable size: %.2f MB\n', info.bytes / 1e6);Step 2: Profile Memory Allocations
Find where memory is being allocated.
profile('-memory', 'on');
for iter = 1:5
targetFunction(inputs);
end
profile off;
p = profile('info');
ft = p.FunctionTable;
[~, idx] = sort([ft.TotalMemAllocated], 'descend');
for i = 1:min(15, numel(idx))
f = ft(idx(i));
fprintf('%-40s %10.2f MB\n', f.FunctionName, f.TotalMemAllocated/1e6);
endIf TotalMemAllocated fields are zero, fall back to whos snapshots before/after each function call.
Key things to look for:
Functions with high "Allocated" but low "Freed" — memory is retained
Functions called many times with moderate allocations — total adds up
Large gaps between Allocated and Freed — temporaries accumulating
Step 3: Identify Optimization Opportunities
Based on profiling, identify which patterns apply. See references/memory-patterns.md for code examples.
| Pattern | Typical Reduction | Look For |
|---|---|---|
Cell collection + vertcat | O(N²) → O(N) | [arr; newRow] inside loops |
Implicit expansion over repmat | Eliminates full copy | repmat(A, [1 1 K]) for broadcasting |
| Clear variables when done | Immediate reclamation | Large arrays used only in early steps |
| Break chained expressions | 1 fewer peak temporary | a.*b.*c./d all alive at once |
| Reuse variables (overwrite in-place) | Avoids output allocation | Separate variables for each step |
max/min instead of masking | Eliminates logical temporary | x .* (x > 0) pattern |
zeros(...,'like',x) | Eliminates temporaries | 0 * x to create zeros |
| Copy-on-write sharing | Shares backing memory | Same array assigned to multiple places |
| Dense → sparse | O(N²) → O(N·bw) | zeros(N,N) where N > 10000 |
Step 4: Implement Optimizations
Apply the identified patterns. Focus only on the hotspots identified in Step 2 — do not apply patterns everywhere.
Step 5: Measure Optimized Memory
Re-measure using the same method as Step 1:
m0 = memory;
optimizedFunction(inputs);
m1 = memory;
deltaOpt = m1.MemUsedMATLAB - m0.MemUsedMATLAB;
reduction = 1 - deltaOpt / deltaBytes;
fprintf('Optimized: %.2f MB (%.0f%% reduction)\n', deltaOpt/1e6, reduction*100);Step 6: Verify Correctness
Every optimization must produce the same results:
original = originalFunction(inputs);
optimized = optimizedFunction(inputs);
maxErr = max(abs(original(:) - optimized(:)));
fprintf('Max error: %.2e\n', maxErr);
assert(maxErr < 1e-10, 'Results differ!');Step 7: Report Results
Summarize the memory optimization with baseline, optimized, reduction percentage, correctness check, and patterns applied.
Key Rules
Never propose optimizations based solely on reading source code — always measure and profile first
Verify correctness — memory optimizations must produce identical results
Clear variables early — free memory as soon as data is no longer needed
Avoid growing arrays — preallocate or use cell collection
Break chains — sequential assignment reduces peak memory vs chained expressions
Watch for copies — MATLAB copies on write; reuse variables to avoid duplicates
Platform Notes
Windows:
memorycommand returns full statistics (MemUsedMATLAB, etc.)Linux/macOS:
memoryerrors ("not supported on this platform"). Usewhosfor variable sizes, JavaRuntime.getRuntimefor heap usage, or OS-level RSS viasystem('ps ...')profile -memory: Works on all platforms but is undocumented since R2016a. When unavailable, usewhossnapshots before/after function calls.
Copyright 2026 The MathWorks, Inc.
Files
- ATTRIBUTION.mdAdded by AutoGineer1.0 KiB
- LICENSELicence file added by AutoGineer1.4 KiB
- SKILL.md5.2 KiB
- manifest.yaml450 B
- references/memory-patterns.md1.6 KiB
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- MathWorks
- Publisher
- MathWorks (Official)
- Source
- matlab/matlab-agentic-toolkit · skills-catalog/matlab-software-development/matlab-optimize-memory · commit 2a7f215
- Licence
- BSD 2-Clause License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE.md)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by MathWorks or MathWorks.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download matlab-optimize-memory.zip