массив ячеек строк в структуру matlab

массив ячеек строк в структуру matlab

Мне нужно создать структуру Matlab как таковую, ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})которая хранит как массив структур 1x2 с именем поля. Вызов ds.nameгенерирует вывод:

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

Обратите внимание на одинарные кавычки в выводе. Они важны. При этом мне нужно создать вышеупомянутую структуру, используя следующую переменную: X = [1x46 char] [1x47 char]т.е. ячейку 1x2, которая, как я полагаю, на самом деле является массивом ячеек строк. Среди прочего, я пробовал следующее:

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

что приводит к массиву структур 1x2 с именами полей, однако вызов Y генерирует вывод:

Y.name
ans = my_name_is
ans = matlab_thining_hair

Обратите внимание, что одинарные кавычки в выводе отсутствуют, и хотя и Y, и ds являются массивами структур 1x2 с именами полей, значения полей отформатированы по-разному, а структуры также различаются по размеру байтов. По сути, мне нужна структура с полями массивов ячеек, где по сути каждый массив ячеек состоит из уникального массива символов. Я не знаю, как отформатировать значения полей как массивы символов? Любая помощь будет очень кстати.

решение1

Несоответствие в вашем примере заключается в том, что каждый элемент вашего исходного примера ds.name является ячейкой, содержащей символ (например, {'my name is'}), тогда как каждый элемент X является символом (например, 'my name is'). Если вы измените тип каждого элемента X с символа на ячейку, содержащую символ, то вы должны получить поведение, которое ищете.

Это показано в примере ниже.

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

Y = cell2struct(X2, 'имя', 1);

Y.имя

ответ =

'меня зовут'

ответ =

'matlab_истончение_волос'

Вы можете добиться этого для вашей переменной X, проиндексировав элементы и выполнив:

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

X2{2}={X{2}}

Помощь Matlabздесьвесьма полезно по этой теме.

Связанный контент