/ / matriz das propriedades da matriz dos objetos - matlab

propriedades de matriz de matriz de objetos - matlab

Eu tenho uma matriz de classes (vamos chamá-lo a, tamanho Mx1) que contém uma propriedade (feature) que contém uma matriz 1xN. Estou tentando obter uma nova matriz que é MxN, que contém linhas de cada um dos feature propriedade dos objetos. Por exemplo:

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]

então, dada alguma função, a resposta acabaria como:

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

Atualmente, eu tenho usado o seguinte:

ans = cell2mat({a.feature}")

no entanto, sinto que deve haver uma maneira de fazer issosem precisar converter para uma célula, alterne as dimensões e depois converta para uma matriz. Estou correto ou essa seria a melhor maneira de resolver o problema? Não consegui encontrar nenhuma função na documentação.

Respostas:

1 para resposta № 1

Quando você tem uma matriz de objetos e acessa uma propriedade usando a referência de pontos, um lista separada por vírgula é retornado. Esta lista separada por vírgula pode ser passado para uma função e aparecerá como vários argumentos de entrada.

No seu caso, você pode passar essa lista separada por vírgula para cat e especifique que você deseja que cada valor seja concatenado para o próximo na primeira dimensão. Então, isso simplesmente se tornaria:

features = cat(1, a.feature)

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

Isso é funcionalmente equivalente a:

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