Effacer les filtres
Effacer les filtres

resampling DEM using imresize in a for loop = cell array?

2 vues (au cours des 30 derniers jours)
Sam
Sam le 2 Mai 2013
I have a replicated, 20 'layer' DEM datacube 2380x1707x20 and want to iteratively decrease the grid resolution of each layer, while passing all outputs into a single object. It's a scaling exercise to compare resampling with smoothing.
imresize() function works well for decreasing the grid rez, and because each for loop output contains different dims I assume passing them into a single cell array is the way to go. But my approach and/or notation is off... help?
%%RESAMPLE DEM OBJECT
rast
n = 1:1:20;
for i=1:n
out{i} = imresize(rast(:,:,i), 1/i, 'Method', 'box');
end
Cell contents assignment to a non-cell array object.

Réponse acceptée

Sean de Wolski
Sean de Wolski le 2 Mai 2013
What is out before the loop starts?
You should preallocate it as a cell:
out = cell(3,1);
for ii = 1:3
out{ii} = imresize(rand(randi(100)),0.25);
end
  1 commentaire
Sam
Sam le 3 Mai 2013
Thanks, Sean. Another for the karma bank.
out = cell(size((rast),3),1);
for i=1:size((rast),3)
out{i} = imresize(rast(:,:,i), 1/i, 'Method', 'box');
end

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by