Как я могу изменить тип данных поля в структурном массиве?
У меня есть структурный массив 2417 на 50 в MATLAB, и я пытаюсь найти векторизованный способ преобразования некоторых типов полей:
У меня есть столбец символов, которые я хочу преобразовать в строковый тип:
[DataS.Sector] = string([DataS.Sector]);
но это не работает. Я не хочу использовать цикл, так как это занимает так много времени.
Та же проблема, но преобразование в числовые значения. Прямо сейчас я использую цикл, который занимает очень много времени:
for i = 1:length(DataS) for j = 1:numel(Vectorpour) DataS(i).(DataSfieldname{k}) = str2double(DataS(i).(DataSfieldname{k})) end end
Как я могу векторизовать каждый из этих подходов?
1 ответ
Вы можете выполнить оба этих преобразования для всех элементов массива структуры, захватив значения полей в массиве ячеек, выполнив преобразование (используя string
или же str2double
), преобразовывая результат в массив ячеек, используя num2cell
затем перезаписываем исходные поля, используя список через запятую:
% For part A:
temp = num2cell(string({DataS.Sector}));
[DataS.Sector] = temp{:};
% For part B:
temp = num2cell(str2double({DataS.(DataSfieldname{k})}));
[DataS.(DataSfieldname{k})] = temp{:};