MATLAB Answers

Egor
0

Looping over function string arguments

Asked by Egor
on 17 Jun 2014
Latest activity Edited by Egor
on 17 Jun 2014
The problem is:
%%%%%%%%%%%%%%%%%%%%%%%%%%%This works fine %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%interpolation='bicubic';
interpolation='bilinear';
for scale=1:4
for image_idx={'01', '02', '03'}
img_name = strjoin(cellstr(['E:\', image_idx, '.tiff']));
Iin = imread(img_name);
...
Iout = imresize(Iin, scale, interpolation);
...
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%This does not %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for interpolation={'bilinear', 'bicubic'}
for scale=1:4
for image_idx={'01', '02', '03'}
...
Iout = imresize(Iin, scale, interpolation);
...
end
end
end
Second case throws an exception:
Index exceeds matrix dimensions.
Error in imresize>parseMethodArg (line 432)
kernel_width = method{2};
Error in imresize>parseInputs (line 252)
[params.kernel, params.kernel_width, params.antialiasing] = ...
Error in imresize (line 141)
params = parseInputs(varargin{:});
Error in test_algorithm (line 25)
Ic = imresize(Ic, scale, interpolation);

  0 Comments

Sign in to comment.

1 Answer

Answer by David Sanchez
on 17 Jun 2014
 Accepted Answer

In the second method you are passing a cell array as input argument.
Try this:
interpolation={'bilinear', 'bicubic'};
for k=1:numel(interpolation)
for scale=1:4
for image_idx={'01', '02', '03'}
...
Iout = imresize(Iin, scale, interpolation{k});
...
end
end
end

  3 Comments

Egor
on 17 Jun 2014
No errors so far.
Why does this part work as expected so?
for image_idx={'01', '02', '03'}
img_name = strjoin(cellstr(['E:\', image_idx, '.tiff']));
It is iterating over "filelist" without additional indexing, isn't it?
They are different command/functions.
strjoin works fine with cell arrays as input arguments.
For any other function, the input arguments has to be a string.
Egor
on 17 Jun 2014
Yeah, just 've got it by myself.
Thanks for the help!

Sign in to comment.