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 № 1Cuando 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);