array de células de strings para estrutura matlab

1

Eu preciso criar uma estrutura matlab como tal ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}}) que armazena como uma matriz de estrutura 1x2 com um nome de campo. Uma chamada para ds.name gera a saída:

ds.name
ans = 'my_name_is'
ans = 'matlab_thining_hair'

Por favor, note as aspas simples na saída. Eles são importantes. Dito isso, preciso criar a estrutura mencionada acima usando a seguinte variável: X = [1x46 char] [1x47 char] , ou seja, célula 1x2, que, na verdade, acredito ser uma matriz de células de seqüências de caracteres. Entre outras coisas, eu tentei o seguinte:

Y = cell2struct(X, 'name', 1)'

que resulta em uma matriz de estrutura 1x2 com nome de campos, no entanto, uma chamada para Y gera a saída:

Y.name
ans = my_name_is
ans = matlab_thining_hair

Observe que as aspas simples na saída estão ausentes e, embora Y e ds sejam matrizes struct 1x2 com nome de campos, os valores de campo não são formatados da mesma forma e as estruturas também variam em tamanho de bytes. Essencialmente, o que eu preciso é uma estrutura com campos de matrizes de células, onde essencialmente cada matriz de células consiste em uma matriz de caracteres única. Eu estou em uma perda como formatar os valores do campo como matrizes de caracteres? Qualquer ajuda seria muito apreciada.

    
por Kambiz 10.01.2013 / 18:48

1 resposta

1

A discrepância em seu exemplo é que cada elemento do seu exemplo original ds.name é uma célula que contém um caractere (por exemplo, {'meu nome é'}), enquanto cada elemento de X é um caractere (por exemplo, 'meu nome é '). Se você alterar o tipo de cada elemento de X de um char para uma célula que contém um char, então você deve obter o comportamento que está procurando.

Isso é mostrado no exemplo abaixo.

X2={{'my_name_is'},{'matlab_thinning_hair'}};

Y = cell2struct(X2, 'name', 1);

Y.name

ans =

'my_name_is'

ans =

'matlab_thinning_hair'

Você pode conseguir isso para sua variável X indexando os elementos e realizando:

X2{1}={X{1}};

X2{2}={X{2}}

A ajuda do matlab aqui é bastante útil para isso tópico.

    
por 14.01.2013 / 12:22