Vectorisation for nested for loops in Piecewise Linear Transformation
6 views (last 30 days)
Show older comments
Hi everyone,
I'm trying to remove the for loops in this piecewise linear transformation function and have tried using vectorisation but can't wrap my head around how the code would look.
for i = 1:size(original,1)
for j = 1:size(original,2)
if (original(i,j) < x1)
transformed(i,j) = m1 * original(i,j);
elseif (original(i,j) >= x1 && original(i,j) < x2)
transformed(i,j) = m2 * (original(i,j) - x1) + y1;
else
transformed(i,j) = m3 * (original(i,j) - x2) + y2;
end
end
end
Is there any way I can do a piecewise linear transformation (contrast stretching) without the nested for loop to speed up the execution?
0 Comments
Accepted Answer
Voss
on 10 Nov 2022
transformed = original;
idx = original < x1;
transformed(idx) = m1 * original(idx);
idx = original >= x1 & original < x2;
transformed(idx) = m2 * (original(idx) - x1) + y1;
idx = original >= x2;
transformed(idx) = m3 * (original(idx) - x2) + y2;
More Answers (0)
See Also
Categories
Find more on Historical Contests in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!