2011-03-14 3 views
6

에 textscan()를 사용하는 경우 "문자를 무시 데이터는 읽고있는 것은 :내가 파일에서 데이터를 읽을 textscan을 사용하고 MATLAB

"ABC",0.156 
"DEF",0.125 
"GHI",0.101 

내 코드입니다 - data = textscan(fid, '%s %f', 'Delimiter', ',');

데이터 {1} 내가 원하는

'"ABC"' 
'"DEF"' 
'"GHI"' 

로 제공되는 데이터 {1}로 -

'ABC' 
'DEF' 
'GHI' 

마지막으로, 나는 대신 데이터를 사용

data = 
'ABC' [0.156]; 
'DEF' [0.125]; 
'GHI' [0.101]; 

로 대답을 할 수있는 방법 {1} 및 데이터 {2}. 감사!

답변

4

실제로 문자열을 읽을 때 "자를 무시하는 두 가지 방법이 있습니다. TEXTSCAN 문서에 따라, 대신 %s 형식의 %q 형식을 사용할 수 있습니다

data = textscan(fid,'%q %f','Delimiter',','); 

을 아니면 %s 형식을 사용하여 문자열을 읽을 수 및 기능 STRREP 사용 data{1}에서 " 문자를 제거 :

data{1} = strrep(data{1},'"',''); 

NUM2CELL 함수를 사용하면 data{2}의 숫자 값 배열을 셀 배열로 변환하여 concatenate 수 있습니다 data{1} 문자열의 셀 배열 : 위해

>> data = [data{1} num2cell(data{2})]; 

data = 

    'ABC' [0.1560] 
    'DEF' [0.1250] 
    'GHI' [0.1010] 
1

은 큰 따옴표 제거하는 %q이 마법을 수행

data = textscan(fid, '%q %f', 'Delimiter', ','); 

를 사용합니다.

관련 문제