MATLAB:下标赋值维度不匹配:y(:,:,j,i) = x;
MATLAB: Subscripted assignment dimension mismatch: y(:,:,j,i) = x;
我正在尝试从 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;
下标赋值维度不匹配
知道为什么吗?
根据您评论中的附加内容,我会这样解决:
%get all cols which are zero in all slices
h=all(all(VolStack==0,1),2)
cidx=all(h,3)
%same for rows
ridx=all(h,4)
%delete zero only rows and cols:
VolStack=VolStack(:,:,~ridx,~cidx)
这样您的代码会 运行 更快,并且不会删除任何非零数据。
我正在尝试从 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;
下标赋值维度不匹配
知道为什么吗?
根据您评论中的附加内容,我会这样解决:
%get all cols which are zero in all slices
h=all(all(VolStack==0,1),2)
cidx=all(h,3)
%same for rows
ridx=all(h,4)
%delete zero only rows and cols:
VolStack=VolStack(:,:,~ridx,~cidx)
这样您的代码会 运行 更快,并且不会删除任何非零数据。