array de células de strings para estrutura matlab

array de células de strings para estrutura matlab

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

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

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

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

o que resulta em uma matriz de estrutura 1x2 com nome de campos, porém uma chamada para Y gera a saída:

Y.name
ans = my_name_is
ans = matlab_thining_hair

Observe que faltam aspas simples na saída e, embora Y e ds sejam matrizes de estrutura 1x2 com nomes de campos, os valores dos campos não são formatados da mesma forma e as estruturas também variam em tamanho de bytes. Essencialmente, o que preciso é de uma estrutura com campos de matrizes de células, onde essencialmente cada matriz de células consiste em uma matriz de caracteres exclusiva. Não sei como formatar os valores dos campos como matrizes de caracteres? Qualquer ajuda seria muito apreciada.

Responder1

A discrepância no seu exemplo é que cada elemento do seu exemplo original ds.name é uma célula contendo 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 contendo um char, deverá obter o comportamento que está procurando.

Isso é mostrado no exemplo abaixo.

X2={{'meu_nome_é'},{'matlab_thinning_hair'}};

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

Y.nome

resposta =

'meu nome é'

resposta =

'matlab_afinamento_cabelo'

Você poderia conseguir isso para sua variável X indexando os elementos e executando:

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

X2{2}={X{2}}

A ajuda do matlabaquié bastante útil neste tópico.

informação relacionada