2016-06-30 3 views
1

matlab에서 숫자로 변환하고자하는 숫자의 셀 배열 (문자열 형식)이 있습니다. 것은 그들이 큰 따옴표로 묶여 있으며 str2num을 사용하여 변환 할 수없는 것 같습니다.문자열을 matlab에서 숫자로 변환

a = {'"15"'; '"16"'; '"17"'; '"30"'; '"50"'} 

숫자를 삭제하거나 큰 따옴표를 삭제하는 방법이 있습니까? 감사!

답변

4

큰 따옴표는 수동으로 제거해야합니다. cellfun을 사용하여 각 셀에 anonymous function을 적용하면됩니다. 첫 번째와 마지막 문자 오프

  1. 익명 함수는 단순히 스트립 : 다음 두 가지 방법이 있습니다. 일부 문자열은 큰 따옴표 기호를 포함 할 수 없습니다, 또는 임의의 위치에있는 몇몇 포함 할 수있는 경우 어떤을 제거하는 것이

    a = {'"15"'; '"16"'; '"17"'; '"30"'; '"50"'}; 
    result = cellfun(@(x) str2double(x(2:end-1)), a); 
    
  2. 는, 익명 함수를 사용 : 큰 따옴표 기호는 그 위치에 항상 경우에 작동 심볼의 발생 : 도움을

    a = {'15'; '16'; '"17"'; '30"'; '"""50"""'}; 
    result = cellfun(@(x) str2double(x(x~='"')), a); 
    
+1

감사합니다. 그것은 작동합니다! – TYL

+1

[regexp] (http://mathworks.com/help/matlab/matlab_prog/regular-expressions.html)를 사용하면 좀 더 빠르고 어쩌면 좀 더 강력한 솔루션입니다. result = cellfun (@ str2double, regexp (a, '\ d + \.? \ d *', 'match'))' – serial

+0

@ serial 좋은 아이디어. 그러나 음수 또는 '.123' (선행하지 않고'0')이있는 경우 정규 표현식을 수정해야합니다. –

관련 문제