Pregunta

En primer lugar, ni siquiera estoy seguro de que esto se llame matriz y soy nuevo en MATLAB.Pero digamos que tengo una "matriz" que se ve así:

for n=1:10
...
someImage = mat(:,:,n) %The "matrix"
...
end

dónde n podrían ser los fotogramas de un vídeo, por ejemplo, y los 2 primeros ':' son los datos de fila y columna de la imagen 2D (el marco).

Si solo quisiera el primero ':' de datos (la fila?¿columna?elemento?), ¿cómo podría acceder solo a eso?

Intuitivamente, pienso algo como:

row1 = mat(:,0,0)
row2 = mat(0,:,0)
row3 = mat(0,0,:)

pero eso no parece estar funcionando.

PDSé que estas no son realmente filas, la terminología para todo esto también sería muy apreciada.

Además, puede que no tenga nada que ver con esto, pero también estoy usando una GUI de MATLAB y la "matriz" se almacena así:

handles.mat(:,:,n)

No creo que tenga nada que ver con mi pregunta real, pero podría ser así. La pondré aquí.

-¡Gracias!

¿Fue útil?

Solución

Un punto que me gustaría hacer antes de comenzar:MATLAB comienza a indexar en 1, y no 0.Este es un error común que comete la mayoría de las personas que tienen experiencia en programación C/Java/Python al ingresar a MATLAB.

Además, haciendo:

row1 = mat(:,1,1);

Esto accede a todas las filas de la primera columna y al primer fotograma de su vídeo.Tenga en cuenta que esto producirá un M x 1 vector, donde M denota el número de filas de un fotograma de tu vídeo.

También:

row2 = mat(1,:,1);

Esto accede a todas las columnas de la primera fila del primer cuadro.Tenga en cuenta que esto producirá un 1 x N vector, donde N denota el número de columnas de un fotograma de su vídeo.

También:

row3 = mat(1,1,:);

Esto accede a todos los píxeles en el completo Secuencia de vídeo en la fila 1 y la columna 1.Puedes pensar en esto como un segmento temporal en la esquina superior izquierda de tu secuencia de video.Tenga en cuenta que esto producirá un 1 x 1 x T vector, donde T es el número de fotogramas de tu vídeo.Si accede a una sola ubicación de píxel en su vídeo, las dos primeras dimensiones son superfluas, por lo que puede utilizar la squeeze comando para reducir todas las dimensiones singleton para que se simplifique a un T x 1 vector.En otras palabras, haz esto:

row3 = squeeze(mat(1,1,:));

FWIW, tienes la terminología correcta.Las filas y columnas se utilizan en el procesamiento de imágenes/vídeo todo el tiempo.En cuanto a la "matriz", puedes llamarla secuencia temporal o un secuencia de fotogramas en términos de procesamiento de vídeo.Ciertamente es una matriz 3D, pero las personas en este dominio la denominan cualquiera de las dos, ya que en realidad es una secuencia de imágenes/cuadros apilados uno encima del otro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top