Estoy tratando de generar un RGB etiqueta sector con label2rgb y utilizarla para actualizar un RGB volumen, como este:

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


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

Me da el siguiente error:

**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;

De depuración, me sale esto:

size(labelRGB_slice)

ans =

   160   216     3

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

ans =

   160   216

Yo declaré que maneja.labelRGB como este:

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

Así que no entiendo el índice de disparidad.

¿Cómo puedo hacer la división de trabajo de asignación?

InformationsquelleAutor andandandand | 2013-08-26

1 Comentario

  1. 6

    Basada en la forma en que se han declarado handles.labelRGB es una 4D matriz de tamaño [160 216 3 3] sin embargo se indización como una matriz 3D utilizando handles.labelRGB(:,:,handles.current_slice_z) que significa matlab se utiliza lineal de indexación durante los últimos dos dimensiones. Así que si, decir handles.current_slice_z = 5, devuelve handles.labelRGB(:,:,2,2) que es una matriz de tamaño [160 216]. Por lo tanto dependiendo del significado de handles.current_slice_z usted necesita para utilizar

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

    o

    handles.labelRGB(:,:,handles.current_slice_z,:) = labelRGB_slice;
    • La primera opción que maneja.labelRGB(:,:,:, asas.current_slice_z) = labelRGB_slice; da «subíndice de asignación de dimensión desajuste». La segunda opción asas.labelRGB(:,:,asas.current_slice_z,:) = labelRGB_slice; funciona bien. Gracias

Dejar respuesta

Please enter your comment!
Please enter your name here