Looping over function string arguments
3 views (last 30 days)
Show older comments
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
Accepted Answer
David Sanchez
on 17 Jun 2014
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
David Sanchez
on 17 Jun 2014
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.
More Answers (0)
See Also
Categories
Find more on Matrix Indexing 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!