Из того, что я понял из вашего вопроса, и, соглашаясь с Крисом Луенго в части цикла, вот что я бы предложил. Я предполагаю, что scale(1) = 1
или что-то в этом роде, потому что вы инициализируете N = (cell(length(scale) - 1, 1))'
, поэтому я думаю, что одно из значений в scale
не важно.
function newImgs = imresizenew(img, scale)
% Initialize cell array.
newImgs = cell(numel(scale) - 1, 1);
% Avoid copying of img and using cellfun by directly filling
% newImgs with properly resized images.
for k = 1:numel(newImgs)
newImgs(k) = imresize(img, scale(k + 1));
end
end
Небольшой тестовый скрипт:
% Input
img = rand(600);
scale = [1, 1.23, 1.04, 0.84, 0.5, 0.1];
% Call own function.
newImgs = imresizenew(img, scale);
% Output dimensions.
for k = 1:numel(newImgs)
size(newImgs{k})
end
Выход:
ans =
738 738
ans =
624 624
ans =
504 504
ans =
300 300
ans =
60 60