2013-11-15 4 views
0

나는 1 개의 강우 데이터 int를 다운로드했습니다. 텍스트 파일 * .txt에는 텍스트, 제목, 하단 텍스트 및 데이터가 포함되며 데이터 사이에는 공백이 일부 포함됩니다. Matlab에 파일을 가져올 때 matlab에 포함 된 각 열과 행 (구분 기호가 아닌 항목)을 정의 할 수 없습니다.matlab에 비 구분 문자 파일 가져 오기

Excel 파일로 변환하고 cols와 rows를 매우 쉽게 제거합니다. 다른 파일로 저장하십시오. 그러나 내 데이터는 최대 846000 데이터 세트 ~ 24 시간 x 30 일 x 12 개월 x 20 년으로 각 데이터마다 여러 파일을 결합했습니다. 그래서 내가했던 것처럼 수동으로 변환하는 것은 어렵습니다. 내 조언자는 MATLAB CODE가 잘 할 수 있다고 말했습니다. 누구든지이 문제를 도와 줄 수 있습니까?

원래 : https://drive.google.com/file/d/0By5tEg03EXCpekNaemItMF85ZWs/edit?usp=sharing

답변

1

당신은 내가 아니라 매트랩을 할 수 있도록하는 것보다 matlab에 좋아하는 형식으로 쉘을 사용하여 이러한 데이터 파일을 변환하는 것이 좋습니다 Mac 또는 Linux의 경우. 이것은 Windows에서도 작동하지만, MinGW, Cygwin 또는 Git Bash와 같은 유닉스 계열 쉘이 설치된 경우에만 가능합니다. 그런 다음 루프의 모든 원시 데이터 파일을 통해 것은이 같은 하나의 CSV로 결합 할 수

cat "$file" | sed 's: *:,:g' | sed 's:^,::' | grep '^[0-9]' > "$file".csv 

: 예를 들어

, 이것은 당신이 CSV에 공유 파일의 원시 데이터 섹션을 변환

for file in *.txt; do 
    cat "$file" | sed 's: *:,:g' | sed 's:^,::' | grep '^[0-9]' >> all.csv 
done 

예를 들어 어느 연도와 어떤 기상 관측소를 유지해야하는지 알기를 원하면 각 파일의 시작 부분에서 그 값을 캡처하여 각 행의 열로 바꾸십시오. 다음은 일년 전에 기상 관측소 ID와 기상 관측기 ID를 집계하여 열로 삽입하는 예제입니다.

for file in *.txt; do 
    station="$(grep 'Station -' "$file" | sed 's: *Station - ::' | sed 's: .*::' | uniq)" 
    year="$(grep 'Water Year' "$file" | awk '{print $4}')" 
    cat "$file" | sed 's: *:,:g' | grep '^,[0-9]' |\ 
    sed "s/^,/$station,$year,/" >> all.csv 
done 
+0

매우 감사합니다. Windows 7 시스템을 사용하고 있습니다. MATLAB 창에서 명령 코드를 갖고 싶습니다. 입력 할 때 프로그램이 자동으로 텍스트 파일을 MATLAB으로 가져 와서 셀로 변환 한 다음 구분 기호 형식의 새로운 Excel 또는 텍스트 파일에 쓰면 모든 것이 완료됩니다. . 감사 – HongQuan