Matlab,“赋值比非单例下标有更多非单例rhs维度”

时间:2013-08-26 02:11:31

标签: matlab

我正在尝试使用label2rgb生成RGB标签切片并使用它来更新RGB卷,如下所示:

    labelRGB_slice=label2rgb(handles.label(:,:,handles.current_slice_z), 'jet', [0 0 0]);


    handles.labelRGB(:,:,handles.current_slice_z) = labelRGB_slice;

我收到以下错误:

**Assignment has more non-singleton rhs dimensions than non-singleton subscripts**

Error in Tesis_GUI>drawSeedButton_Callback (line 468)
        handles.labelRGB(:,:,handles.current_slice_z) = labelRGB_slice;

调试时我得到了这个:

size(labelRGB_slice)

ans =

   160   216     3

K>> size(handles.labelRGB(:,:,handles.current_slice_z) )

ans =

   160   216

我声明了handle.labelRGB:

handles.labelRGB = zeros(dim(1), dim(2), dim(3), 3);

所以我不明白指数的差异。

如何使切片分配有效?

1 个答案:

答案 0 :(得分:6)

根据您声明handles.labelRGB的方式,它是一个大小为[160 216 3 3]的4D数组,但是您使用handles.labelRGB(:,:,handles.current_slice_z)将其编入索引为3D数组,这意味着matlab将使用{{3}最后两个维度。因此,如果handles.current_slice_z = 5,则返回handles.labelRGB(:,:,2,2),这是一个大小为[160 216]的矩阵。因此,根据handles.current_slice_z的含义,您需要使用

handles.labelRGB(:,:,:,handles.current_slice_z) = labelRGB_slice;

handles.labelRGB(:,:,handles.current_slice_z,:) = labelRGB_slice;