How to convert script into a function

1 view (last 30 days)
Hello all,
I am quite beginner for matlab coding. I have a code which selects a ROI over an image. You may find code below.
clear all
clc
randomimage=randi([0 2^16-1], 256, 256, 'uint16');
%imshow(randomimage)
S = [64 64 127 127];
figure, imshow(randomimage);
h = imrect(gca, S);
addNewPositionCallback(h,@(p) title(mat2str(p,3)));
fcn = makeConstrainToRectFcn('imrect',get(gca,'XLim'),get(gca,'YLim'));
setPositionConstraintFcn(h,fcn)
position = wait(h);
ROIIMAGE = imcrop(randomimage,position);
close all
figure, imshow(ROIIMAGE);
Code generates a random 16 bit image and create a size adjustable rectangular to select ROI. Then selected ROI will be opened as another figure by double clicking the rectangle.
My question is how can I put this code into a function. Thanks in advance.

Accepted Answer

Ameer Hamza
Ameer Hamza on 28 Sep 2020
Defining a function needs you to specify what are inputs and outputs. There are several ways you can write this as a function. Read here: https://www.mathworks.com/help/matlab/ref/function.html.
For example,
function fig = myFunction(randomimage)
%imshow(randomimage)
S = [64 64 127 127];
figure, imshow(randomimage);
h = imrect(gca, S);
addNewPositionCallback(h,@(p) title(mat2str(p,3)));
fcn = makeConstrainToRectFcn('imrect',get(gca,'XLim'),get(gca,'YLim'));
setPositionConstraintFcn(h,fcn)
position = wait(h);
ROIIMAGE = imcrop(randomimage,position);
close all
fig = figure;
imshow(ROIIMAGE);
end
This function takes randomImage as input and returns the figure handle of the last figure as output. You can call it like this
randomimage=randi([0 2^16-1], 256, 256, 'uint16');
myFunction(randomimage);
or following if you need the figure handle too
randomimage=randi([0 2^16-1], 256, 256, 'uint16');
f = myFunction(randomimage);

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!