2017-05-19 19 views
1

私は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 
    

どのように私は、これらのアプローチのそれぞれをベクトル化することができます。今、私は本当に長い時間がかかるループを使用していますか?

答えて

0

あなたは、元の上書き、cell arrayのフィールド値を取り込む(string又はstr2doubleを使用して)変換を行って、num2cellを使用してセルアレイに結果を変換して、structure arrayのすべての要素を横切ってこれらの変換の両方を行うことができます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{:}; 
関連する問題