/ / matriz de propiedades de matriz de objetos - matlab

matriz de propiedades de matriz de objetos - matlab

Tengo una serie de clases (lo llamaremos a, tamaño Mx1) que contiene una propiedad (feature) que contiene una matriz 1xN. Estoy tratando de obtener una nueva matriz que es MxN que contiene filas de cada uno de los feature Propiedad de los objetos. Por ejemplo:

M = 3
N = 4
a(1,1).feature = [1 2 3 4]
a(2,1).feature = [5 6 7 8]
a(3,1).feature = [9 10 11 12]

entonces, dada alguna función, la respuesta terminaría como:

ans = [1 2 3 4; 5 6 7 8; 9 10 11 12]

Actualmente, he estado usando lo siguiente:

ans = cell2mat({a.feature}")

sin embargo siento que debería haber una manera de hacer estosin tener que convertir a una celda, cambiar las dimensiones y luego convertir a una matriz. ¿Estoy en lo correcto o sería la mejor manera de resolver el problema? No he podido encontrar ninguna de esas funciones en la documentación.

Respuestas

1 para la respuesta № 1

Cuando tiene una matriz de objetos y accede a una propiedad utilizando la referencia de puntos, un lista separada por comas es regresado. Esta lista separada por comas se puede pasar a una función y aparecerá como múltiples argumentos de entrada.

En su caso, puede pasar esta lista separada por comas a cat y especifique que desea que cada valor se concatene a la siguiente en la primera dimensión. Así que esto simplemente se convertiría en:

features = cat(1, a.feature)

%// 1     2     3     4
%// 5     6     7     8
%// 9    10    11    12

Esto es funcionalmente equivalente a:

features = cat(1, a(1).feature, a(2).feature, a(3).feature, ..., a(end).feature);