2013-08-20 6 views
1

나는 matlab에로드하고 싶은 거대한 CSV 파일을 가지고있다. 그러나 필자는 이름을 알고있는 특정 열에 만 관심이 있습니다.CSV 파일의 열 수를 얻는 방법은 무엇입니까?

첫 번째 단계는 CSV 파일의 열 수를 확인하는 것입니다. 어떻게 할 수있는 matlab에?

+3

가 줄 바꿈까지 쉼표의 수를 계산 어쩌면 하나를 추가? – Jonesopolis

+0

내 경우에는 개행 문자가 없으므로 fgetl이 작동하지 않습니다. ( – RoflcoptrException

+0

CSV에 열에 대해 delimeter가 있고 행에 개행 문자가 있습니다. 어떻게 설정합니까? – Jonesopolis

답변

0

1- )는
3- 콤마없는 경우) 카운트) 콤마, 또는 구분자 문자의 수를 파일
2의 첫 번째 행을 읽고 상기 카운트에 1을 추가 한 결과는 열의 수이며 파일에.

2

존시와 erelender 제안, 나는이 그것을 할 것입니다 생각 :

fid=fopen(filename); 
    tline = fgetl(fid); 
    fclose(fid); 
    length(find(tline==','))+1 

당신은 그 때 사용되는 캐리지 리턴 문자 (또는 문자 인코딩?)의 종류를 알고하지 않는 것 때문에 I 인식 가능한 CR 문자가 나올 때까지 점진적으로 파일을 샘플링 할 것을 제안합니다. 이렇게하는 한 가지 방법은 N 문자의 수를 읽는 것입니다

A = fscanf(fileID, ['%' num2str(N) 'c'], sizeA); 

같은 이상 루프입니다. 캐리지 리턴 문자가 있는지 각 반복 테스트 A에서 하나가 발생하면 중지하십시오. 캐리지 리턴이 올바른 N으로 반복되는 곳을 알고 난 다음 length(find...) 작업을 수행하거나 각 반복에서 쉼표 수를 번갈아 누적하십시오. 파일이 행을 따라 읽혔는지 확인하고 싶을 수도 있습니다 (항상 그렇습니까?) 몇 가지 샘플을 확인하여 그것이 맞는지 확인하십시오. csv로는 숫자 값을 갖는 경우

+1

OP의 'fgetl'이 이겼습니다. 일하지 않니? –

0

당신은 사용할 수 있습니다

M=csvread('file_name.csv'); 

[row,col]=size(M); 
관련 문제