【问题标题】:How can I change the data type of a field in a structure array?如何更改结构数组中字段的数据类型?
【发布时间】:2017-05-19 11:40:41
【问题描述】:

我在 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
    

如何对这些方法进行矢量化处理?

【问题讨论】:

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


    【解决方案1】:

    您可以在structure array 的所有元素上执行这两种转换,方法是捕获cell array 中的字段值,进行转换(使用stringstr2double),将结果转换为元胞数组使用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{:};
    

    【讨论】:

      猜你喜欢
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多