我在MATLAB中有一个2417乘50的结构数组,我试图找到一种矢量化的方法来转换一些字段类型:
我想要将一列字符转换为字符串类型:
[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
如何对每种方法进行矢量化?
答案 0 :(得分:1)
您可以通过捕获structure array中的字段值,进行转换(使用cell array或string
),在str2double
的所有元素中执行这两项转换,使用num2cell
将结果转换为单元格数组,然后使用comma-separated list覆盖原始字段:
% For part A:
temp = num2cell(string({DataS.Sector}));
[DataS.Sector] = temp{:};
% For part B:
temp = num2cell(str2double({DataS.(DataSfieldname{k})}));
[DataS.(DataSfieldname{k})] = temp{:};