Мне нужно создать структуру 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здесьвесьма полезно по этой теме.