1

Мне нужно создать структуру 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 с полями name, однако при вызове Y генерируется вывод:

Y.name
ans = my_name_is
ans = matlab_thining_hair

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

1 ответ1

1

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

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

Х2 = {{ 'my_name_is'}, { 'matlab_thinning_hair'}};

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

Y.name

ANS =

'меня зовут'

ANS =

'Matlab_thinning_hair'

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

Х2 {1} = {Х {1}};

Х2 {2} = {Х {2}}

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .