Azzera filtri
Azzera filtri

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

2 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Sean de Wolski
Sean de Wolski il 2 Mag 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 Commento
Sam
Sam il 3 Mag 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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by