【发布时间】:2015-04-11 16:33:51
【问题描述】:
我正在尝试从 3D 图像堆栈中的 2D 图像中删除空白 (=0) 列和行,然后生成一个新的 3D 堆栈:
for i=1:numVols;
for j=1:numFrames; % Crop black boundaries
tempvol = VolStack(:,:,j,i);
tempvol(:,all(tempvol==0,1))=[];
tempvol(all(tempvol==0,2),:)=[];
VolStackTemp(:,:,j,i) = tempvol;
end
end
奇怪的是它有时会起作用,但大多数时候我会因为这条线而出错:
VolStackTemp(:,:,j,i) = tempvol;
下标分配维度不匹配
有什么想法吗?
【问题讨论】:
-
这是不可能的,因为
tepvol在每次迭代中都有不同的大小。矩阵在每个切片中的大小始终相同。 -
您必须将
VolStackTemp设为单元矩阵 -
谢谢..应该已经意识到了!有时对于我的数据 tempvol 与 3D 堆栈中的所有 2D 图像的大小相同,但有时它会像您提到的那样变化(例如,对于 j = 1 到 130,size(tempvol) = 487 391,但对于 j = 131,大小(温度)= 486 391)。我认为,作为一种解决方法,对于堆栈的第一个 2D 图像,我将按上述方式进行裁剪,但随后对所有后续 2D 图像使用相同的 2D 尺寸(第一个 2D 图像)。
标签: matlab matrix dimensions mismatch