1

Ich habe einen 2417-by-50-Struktur-Array in MATLAB und ich versuche, einen vektorisiert Weg zu finden, einige der Feldtypen zu konvertieren:Wie kann ich den Datentyp eines Feldes in einem Struktur-Array ändern?

  1. ich eine Spalte von Zeichen, die ich in eine konvertierende string type:

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

    aber es funktioniert nicht. Ich möchte keine Schleife verwenden, da es so viel Zeit braucht.

  2. gleiche Problem, aber in numerische Werte umzuwandeln. Im Moment bin ich mit einer Schleife, die eine wirklich lange Zeit in Anspruch nimmt:

    for i = 1:length(DataS) 
        for j = 1:numel(Vectorpour) 
        DataS(i).(DataSfieldname{k}) = str2double(DataS(i).(DataSfieldname{k})) 
        end 
    end 
    

Wie kann ich jeden dieser Ansätze vektorisieren?

Antwort

0

Sie beide Umwandlungen über alle Elemente Ihres structure array durch die Erfassung der Feldwerte in einem cell array, tun die Umwandlung (mit string oder str2double) durchführen kann, um das Ergebnis zu einem Zellenfeld Umwandlung num2cell verwenden, dann das Original überschreiben Felder unter Verwendung eines 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{:}; 
Verwandte Themen