Я надеюсь, что смогу удобно убедиться, что поле структурного массива содержит только строки (а не символьные массивы). Например,
S(1).f='abc'; S(2).f='asdfa'; S(3).f="aegwer";
Если один делает
setfield(S(1),'f',string(S(1).f))
S(1).f
будет успешно преобразовано в "abc"
, как и ожидалось.
Однако,
arrayfun(@(s)setfield(s,'f',string(s.f)),S)
не только не в состоянии установить все значения полей в 'f' в строки, но фактически преобразовать все значения полей в 'f' в символьные массивы.
Почему arrayfun
превращает string()
в char()
? Или это что-то еще?
MATLAB версия, которую я использую: R2018a