我有一个三维阵列(高光谱图像),我想重采样每一个元素的第一个维度(每个像素),三维(波长)。
我一直在尝试一个嵌套的for循环,但没有成功,我想我误解了这个概念。在这里,我正在尝试:
T_Ire = zeros(size(I)); % initialize array
for i = 1:numel(I(:,1,1))
for t = 1:numel(I(1,:,1))
step=squeeze(I(i,t,:));
step=double(step);
step=step';
step=resample(step',2,3);
T_Ire(i,t,:)=step;
end
end
我是三维阵列(高光谱图像)。
发布于 2016-07-13 01:41:40
这里有两个问题:
step=resample(step',2,3);
时,数组的大小将是原来的三分之二。然后,当你试图把它放回立方矩阵,它将不适合,因为它有较少的元素。您可以通过使用适当的大小初始化T_Ire
来解决这个问题。如下所示:
T_Ire = zeros(size(I, 1), size(I, 2), size(I, 3) * 2 / 3);
I(i,t,:)
时,它的大小将是1x1xN
(其中N
=第三维空间的大小)。但是,当您调用step=squeeze(I(i,t,:));
时,现在是Nx1
了。要将其添加回,您应该调用变性人或重塑将其大小调整回1x1xN
。使用变性人
T_Ire(i,t,:) = permute(step, [3 2 1]);
使用重塑
T_Ire(i,t,:) = reshape(step, [1 1 numel(step)]);
https://stackoverflow.com/questions/38340989
复制相似问题