2012-02-12 3 views
2
난 그냥 MATLAB을 배우기 시작하고 2 차원 배열 .. 여기

MATLAB은 : 혼합 데이터 유형 여러 CSV 파일을 가져 오는 방법에

에 CSV 파일을 가져올 어려움이있다

내 요구에 대한 샘플 CSV입니다 :(모든 CSV 파일은 내가 따로 숫자 데이터 및 텍스트 데이터를 가져 오거나 여러 CSV 파일을 가져올 수있는 빠른 방법이 존재해야 만 정수 번호와 함께 작동 csvread()으로 고정 컬럼과 같은 형식)

Date,    Code,   Number.... 
2012/1/1,   00020.x1,    10 
2012/1/2,   00203.x1,   0300 
... 

혼합 데이터 형식?

감사합니다.

답변

4

당신이 찾고있는 것은 아마도 함수 xlsread입니다.

Excel에서 인식하는 파일을 열고 자동으로 숫자 데이터에서 텍스트 데이터를 분리합니다.

적어도 내 컴퓨터의 기본 구분 기호는 입니다. 아니요, , (적어도 브라질 내 로케일의 경우). 따라서 xlsread는 파일의 필드를 으로 분리하려고합니다.이며 원하는 쉼표가 아닙니다.

변경하려면 시스템 로캘을 변경하여 쉼표를 목록 구분 기호로 추가해야합니다. 따라서 Windows Vista에서 시작하려면 제어판의 시작, 제어판, 국가 및 언어 옵션,이 형식 사용자 정의를 클릭하고 목록 구분 기호를 ';'에서 변경하십시오. ~ ','. 다른 창에서는 프로세스가 거의 동일해야합니다.

[num, txt, all] = xlsread('your_file.csv'); 

과 같이 반환합니다 : 로케일이있는 경우 이미 목록 구분은 ','로 설정하는 것이

num = 

10 
300 


txt = 

'01/01/2012' ' 00020.x1' 
'02/01/2012' ' 00203.x1' 


all = 

'01/01/2012' ' 00020.x1' [ 10] 
'02/01/2012' ' 00203.x1' [300] 

공지 사항, 당신은 필요가 없습니다 입력

그 일을 한 후, 그 일을하기 위해 당신의 시스템에서 무엇이든 바꿀 수 있습니다. 그냥 xlsread 기능을 사용하도록 시스템을 변경하지 않으려면, 당신은 여기에 설명 된 textscan 기능을 사용할 수

: http://www.mathworks.com/help/techdoc/ref/textscan.html

문제는만큼 간단하지 않다는 것이다 파일을 열어야하고, 라인을 반복하고, matlab에 명시 적으로 파일의 형식을 알려줘야하므로 파일을 호출해야합니다.

감사합니다.

+0

Worked! Thanks Castilho !!! 하지만 또 다른 prob.other 새로운 파일이 오래된 파일을 덮어 씁니다 .... 나는 여러 파일을 읽으려고했지만 하나만 (마지막 하나는 처리되었습니다) 가져 왔습니다 .... 이것은 내가 쓴 것입니다 ~ p = dir ('C : \ foldername \ *. csv'); i = 1 : 길이 (p) [num, text, all] = xlsread ([ 'C : \ foldername \', p (i) .name]) – user1205030

+0

안녕하세요! 그것이 도움이 되었기 때문에 기쁘다! 현재 가지고있는 문제는 루프를 구현하는 방법 때문입니다. 루프가 실행될 때마다 num, text 및 all 변수를 덮어 씁니다. 루프가 다른 변수에 대한 할당을 실행할 때마다 수행하면됩니다. – Castilho

0

최근이 문제를 정확히 해결하는 함수를 작성했습니다. delimread을 참조하십시오.

csv 파일의 xlsread는 Windows에서만 작동합니다. Linux 또는 Mac에서 xlsread는 csv 파일을 읽을 수없는 '기본'모드로 작동합니다. 플랫폼 간 마이그레이션 또는 Linux 서버에서의 코드 실행 자동화가 필요한 경우 xlsread를 사용하는 것이 장기간에 좋지 않을 수 있습니다.

xlsread는 Excel 세션을 열어 파일을 읽으므로 다른 텍스트 구문 분석 기능보다 훨씬 느립니다.

관련 문제