2017-05-19 11 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 
    

가 어떻게 이러한 방법의 각을 벡터화 할 수 있습니다 지금은 정말 시간이 오래 걸리는 루프를 사용하고 있습니다?

그러면 원본을 덮어 num2cell을 사용하여 셀 어레이에 따라서 변환 ( string 또는 str2double를 사용하여) 변환을 수행하는 cell array의 필드 값을 포착하여 structure array의 모든 요소를 ​​통해 이러한 변환을 모두 수행 할 수

답변

0

% For part A: 
temp = num2cell(string({DataS.Sector})); 
[DataS.Sector] = temp{:}; 

% For part B: 
temp = num2cell(str2double({DataS.(DataSfieldname{k})})); 
[DataS.(DataSfieldname{k})] = temp{:}; 
하십시오 comma-separated list를 사용하여 필드