如何更改结构数组中字段的数据类型?

时间:2017-05-19 11:40:41

标签: arrays matlab type-conversion vectorization matlab-struct

我在MATLAB中有一个2417乘50的结构数组,我试图找到一种矢量化的方法来转换一些字段类型:

  1. 我想要将一列字符转换为字符串类型:

    [DataS.Sector] = string([DataS.Sector]);
    

    但它不起作用。我不想使用循环,因为它需要花费很多时间。

  2. 同样的问题,但转换为数值。现在我正在使用一个需要很长时间的循环:

    for i = 1:length(DataS)
      for j = 1:numel(Vectorpour)
        DataS(i).(DataSfieldname{k}) = str2double(DataS(i).(DataSfieldname{k}))
      end
    end
    
  3. 如何对每种方法进行矢量化?

1 个答案:

答案 0 :(得分:1)

您可以通过捕获structure array中的字段值,进行转换(使用cell arraystring),在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{:};