2014-06-23 4 views
2

으로 변환하십시오.이 사이트에는 .mat 형식의 데이터 집합이 있습니다. http://www.cs.nyu.edu/~roweis/data.html
형식을 .csv로 변경하고 싶습니다. 누군가가 .csv 파일을 만들기 위해 형식을 변경하는 방법을 알려줄 수 있습니까?.mat 형식의 데이터 집합을 .csv 옥타브/matlab

감사합니다.

+0

Matlab에 액세스 할 수 있습니까? –

+0

예, 있습니다. 앞서 언급 한 웹 사이트의 .mat 파일도 모두 가지고 있습니다. – saha

답변

3

사이트의 .mat 파일을 이미 사용할 수 있다고 가정합니다. 매트랩 명령 창에서 예를 들어, 쓸 수 있습니다 :

load('C:\Users\YourUserName\Downloads\mnist_all.mat'); 

.mat 파일을로드; 결과는 CSV 파일로 저장하려는 작업 공간에 만들어진 test0, test1, ..., train0, train1 ... 행렬 집합이어야합니다. 크기가 다르므로 변수 당 하나의 CSV를 저장해야합니다 (예 : (또한 명령 창에서) :

csvwrite('C:\Users\YourUserName\Downloads\mnist_test0.csv', test0); 

를 반복하여 각 변수에 대한 명령 및 덮어 쓰기를 방지하기 위해 출력 파일로도 이름을 변경하는 것을 잊지 마세요.

+1

MatLab없이 이것을 할 수 있습니까? 그걸 도와주는 도구가 있습니까? – ypriverol

1

Matlab에서 csvwrite 함수를 사용해 보셨습니까?

load 함수로 .mat 파일을로드 한 다음 csvwrite!

+1

명령 이름에 오타가 있습니다. 나는 그것을 편집 하겠지만, 적어도 6 자 이상이어야한다. :-) –

+0

@ CST- 링크 감사합니다! –

0

저는 MATLAB 라이센스가 없으므로 Windows 10에 GNU Octave 4.2.1 (2017)을 설치했습니다 (John W. Eaton 및 다른 사람들에게 감사드립니다). csvwrite를 사용하여 완전히 성공하지 못했기 때문에 다음 해결 방법을 사용했습니다. (BTW, 저는 옥타브 세계에서 완전히 무능합니다 .csvwrite는 간단한 데이터 구조에서 작동했습니다). 명령 창에서

나는 다음 두 명령

을 사용

부하 myfile.mat

저장 ("- 텍스트", "MYFILE.TXT", "여기서 variableName")

은 " myfile.mat "가로드되면로드 된 데이터 벡터의 변수 이름이 작업 영역 윈도우에 표시됩니다. 저장 명령에 사용할 이름입니다. 일부 .mat 파일은 여러 데이터 구조를로드합니다.

"-text"옵션이 기본값이므로이 옵션을 명령에 포함하지 않아도됩니다.

출력 파일은 텍스트 형식의 .mat 파일 내용을 단일 열 (잠재적으로 순차적 변수)로 나열합니다. 텍스트 편집기를 사용하여이 데이터를 원본 행렬 구조로 마사지하여 쉽게 익숙한 모든 응용 프로그램에서 사용할 수 있어야합니다.

0

비슷한 문제가있었습니다. 두 개의 숫자 데이터 열이있는 표준 .mat 파일을 표준 데이터 파일 (ASCII 텍스트)로 변환해야했습니다. csv는 실제로 사용하지 않지만 여기서는 표준 저장 대신 csvwrite를 사용하여 모든 것을 적용 할 수 있습니다. 옥타브 4.2.1 ....

load myfile.mat 
LI = [L, I]   ## L and I are column vectors representing my data  
save myfile.txt LI 

참고 L과 I를 사용

내 원본 데이터 파일에있는 두 개의 열 벡터에 대해 옥타브가 선택한 기본 변수 이름으로 나타납니다. 이상적으로는 모든 파일에 대해 반복되는 스크립트입니다.내 디렉토리에있는 매트 확장 기능이 이상적 일 수도 있지만,이 일은 끝났어. 데이터를 두 개의 공 i으로 분리 된 C 럼으로 저장합니다.

*** 업데이트

다음 스크립트는 같은 디렉토리에있는 .mat 확장과 데이터 파일의 일련의 옥타브 4.2.1에서 작동

. 그것들을 반복하고 같은 이름이지만 확장자가 .dat 인 텍스트 파일에 데이터를 출력합니다. 이것은 효율적이지 않으므로 파일이 많거나 파일 크기가 큰 경우 실행하는 데 시간이 걸릴 수 있습니다. 난 당신이 실제로 그것을 볼 수 있도록 octave mat2dat.m을 사용하여 명령 줄에서 실행하는 것이 좋습니다 것입니다.

본인은 이것이 귀하에게 적합하다는 보장을하지 않지만 저에게 유용합니다. 나는 또한 Octave 나 Matlab에 익숙하지 않기 때문에보다 나은 해결책이 존재할 것이라고 확신한다.

# mat2dat.m 

dirlist = glob("*.mat") 
for i=1:length(dirlist) 
    filename = dirlist{i,1} 
    load(filename, "L", "I") 
    LI = [L,I] 
    tmpname = filename(1:length(filename)-3) 
    txtname = strcat(tmpname, 'dat') 
    save(txtname, "LI") 
end 
관련 문제