массив ячеек строк в структуре 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 с именем поля, значения полей не форматируются одинаково, а структуры также различаются по размеру байтов. По существу, мне нужна структура с полями массивов ячеек, где по существу каждый массив ячеек состоит из уникального массива char. Я в недоумении, как форматировать значения полей как массивы символов? Любая помощь будет принята с благодарностью.
1 ответов
нестыковка в вашем примере является то, что каждый элемент вашего оригинальный пример ДС.имя ячейки, содержащей символ (например, {'Меня зовут'}), если каждый элемент X является символ (например, 'мое имя'). Если вы измените тип каждого элемента X с char на ячейку, содержащую char, то вы должны получить поведение, которое вы ищете.
Это показано в примере ниже.
Х2={{'my_name_is'},{'matlab_thinning_hair'}};
Y = cell2struct (X2, 'имя', 1);
имя Ю.
ans =
'my_name_is'
ans =
'matlab_thinning_hair'
вы могли бы достичь этого для вашей переменной X путем индексирования через элементы и проведения:
X2{1}={X{1}};
X2{2}={X{2}}
справка matlab здесь очень полезно на эту тему.