matlab-apply-assignmen…
Use when a learner asks for help with MATLAB homework, labs, projects, graded assignments, take-home exams, quizzes, or any programming task where academic…
Optimize MATLAB code for better performance through vectorization, memory management, and profiling. Use when user requests optimization, mentions slow code, performance issues, speed improvements, or asks to make code faster or more efficient.
$ npx -y skills add matlab/agent-skills-playground --skill matlab-performance-optimizer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/matlab-performance-optimizerContext preview
The summary Claude sees to decide when to auto-load this skill.
Optimize MATLAB code for better performance through vectorization, memory management, and profiling. Use when user requests optimization, mentions slow code, performance issues, speed improvements, or asks to make code faster or more efficient.
name: matlab-performance-optimizer description: Optimize MATLAB code for better performance through vectorization, memory management, and profiling. Use when user requests optimization, mentions slow code, performance issues, speed improvements, or asks to make code faster or more efficient. license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "1.1"
Optimize MATLAB code performance with vectorization, memory management, and profiling tools.
**Replace loops with vectorized operations whenever possible.**
**SLOW - Using loops:**
% Slow approach
n = 1000000;
result = zeros(n, 1);
for i = 1:n
result(i) = sin(i) * cos(i);
end**FAST - Vectorized:**
% Fast approach n = 1000000; i = (1:n).'; result = sin(i) .* cos(i);
**Always preallocate arrays before loops.**
**SLOW - Growing arrays:**
% Very slow - array grows each iteration
result = [];
for i = 1:10000
result(end+1) = i^2;
end**FAST - Preallocated:**
% Fast - preallocated array
n = 10000;
result = zeros(n, 1);
for i = 1:n
result(i) = i^2;
end**MATLAB built-in functions are highly optimized.**
**SLOW - Manual implementation:**
% Slow
sum_val = 0;
for i = 1:length(x)
sum_val = sum_val + x(i);
end**FAST - Built-in function:**
% Fast sum_val = sum(x);
Use `.*`, `./`, `.^` for element-wise operations:
% Instead of this:
for i = 1:length(x)
y(i) = x(i)^2 + 2*x(i) + 1;
end
% Do this:
y = x.^2 + 2*x + 1;Replace conditional loops with logical indexing:
% Instead of this:
count = 0;
for i = 1:length(data)
if data(i) > threshold
count = count + 1;
filtered(count) = data(i);
end
end
filtered = filtered(1:count);
% Do this:
filtered = data(data > threshold);Use matrix multiplication instead of nested loops:
% Instead of this:
C = zeros(size(A, 1), size(B, 2));
for i = 1:size(A, 1)
for j = 1:size(B, 2)
for k = 1:size(A, 2)
C(i,j) = C(i,j) + A(i,k) * B(k,j);
end
end
end
% Do this:
C = A * B;Use `cumsum`, `cumprod`, `cummax`, `cummin`:
% Instead of this:
running_sum = zeros(size(data));
running_sum(1) = data(1);
for i = 2:length(data)
running_sum(i) = running_sum(i-1) + data(i);
end
% Do this:
running_sum = cumsum(data);% Instead of default double (8 bytes) data = rand(1000, 1000); % 8 MB % Use single precision when appropriate (4 bytes) data = single(rand(1000, 1000)); % 4 MB % Use integers when applicable indices = uint32(1:1000000); % 4 MB instead of 8 MB
For matrices with mostly zeros:
% Dense matrix (wastes memory) A = zeros(10000, 10000); A(1:100, 1:100) = rand(100); % 800 MB % Sparse matrix (efficient) A = sparse(10000, 10000); A(1:100, 1:100) = rand(100); % Only stores non-zeros
% Process large data largeData = loadData(); processedData = processData(largeData); % Clear when no longer needed clear largeData; % Continue with processed data results = analyze(processedData);
% Instead of creating copies A = A + 5; % In-place when possible % Avoid unnecessary copies B = A; % Creates copy if A is modified later B = A + 0; % Forces copy
% Profile code execution profile on myFunction(inputs); profile viewer profile off
The profiler shows:
% Time single execution
tic;
result = myFunction(data);
elapsedTime = toc;
% Benchmark with timeit (more accurate)
timeit(@() myFunction(data))
% Compare multiple approaches
time1 = timeit(@() approach1(data));
time2 = timeit(@() approach2(data));
fprintf('Approach 1: %.6f s\nApproach 2: %.6f s\n', time1, time2);% SLOW indices = find(x > 5); y = x(indices); % FAST y = x(x > 5);
% SLOW - repmat to match dimensions A = rand(1000, 5); B = rand(1, 5); C = A - repmat(B, size(A, 1), 1); % FAST - implicit expansion (R2016b+) C = A - B;
% SLOW - recalculates each iteration
for i = 1:n
result(i) = data(i) / sqrt(sum(data.^2));
end
% FAST - calculate once
norm_factor = sqrt(sum(data.^2));
for i = 1:n
result(i) = data(i) / norm_factor;
end
% EVEN FASTER - vectorize
result = data / sqrt(sum(data.^2));% SLOW - concatenating in loop
str = '';
for i = 1:1000
str = [str, sprintf('Line %d\n', i)];
end
% FAST - cell array + join
lines = cell(1000, 1);
for i = 1:1000
lines{i} = sprintf('Line %d', i);
end
str = strjoin(lines, '\n');
% FASTEST - vectorized sprintf
str = sprintf('Line %d\n', 1:1000);% Instead of separate arrays names = cell(1000, 1); ages = zeros(1000, 1); scores = zeros(1000, 1); % Use table data = table(names, ages, scores);
A sandbox for prototyping and demonstrating Agent Skills for MATLAB and Simulink work. Skills here are experimental. They may be incomplete, change without notice, or migrate to an official toolkit over time.
Repo: matlab/agent-skills-playground
Use when a learner asks for help with MATLAB homework, labs, projects, graded assignments, take-home exams, quizzes, or any programming task where academic…
Use when tutoring a learner through MATLAB debugging, error interpretation, failed tests, incorrect outputs, array-shape problems, indexing mistakes, function…
Use when an AI tutor session concerns MATLAB programming concepts, MATLAB syntax, MATLAB errors, MATLAB code style, MATLAB projects, or MATLAB toolbox…
Use when an instructor wants to create, interview for, configure, install, update, or review a course AI-use policy for MATLAB AI tutoring. Produces an…
Use when prompting a learner to complete hands-on MATLAB coding exercises, guided practice, debugging drills, code tracing, small MATLAB projects, or…
Use when creating, asking, grading, or explaining multiple choice questions for MATLAB programming practice, concept checks, quizzes, or tutoring exercises.