2011-02-09 5 views
21

official documentation 상태 :MATLAB : .mat 버전의 차이점은 다음

enter image description here. 그러나 위의 표에 명시된 것 외에도 다른 중요한 차이점이 있음을 발견했습니다.

: MATLAB의 메모리 1백76메가바이트 차지 6000 요소와 셀 어레이를 저장하는 예

내가 -v7 또는 -v7.3 사용 여부에 따라 다음과 같은 결과 나 준다

    -v7
  • : 파일 크기 = 15메가바이트 및 & 부하를 저장 빠른입니다.
  • -v7.3
  • : 파일 크기 = 4백메가바이트 및 & 부하가 입니다 저장 매우느린 (아마 때문에 큰 파일 크기의 부분).

다른 사람이이 차이점에 주목 했습니까?

업데이트 1 : 회신 지적으로, -v7.3는 HDF5에 의존하고 이러한 오버 헤드가 정말 경우는 명확하지 않지만 매스 웍스에 따르면, , "이 형식은 중요한 스토리지 오버 헤드가" 형식 자체 또는 MATLAB 구현 및 대신 HDF5 처리로 인해 발생합니다.

업데이트 2 : @Andrew Janke는 우리에게 this very helpful PDF (웹상에서 HTML 형식으로 볼 수 없음)을 지적합니다. 자세한 내용은 @Amro가 제공 한 대답의 주석을 참조하십시오. - V7.3 는 예를 들어 -v7의 효율성과 매우 큰 파일을 처리 할 수있는 기능 (두 세계의 최고를 결합하여 어떤 대안 있습니다

이 모두 다음 질문으로 나를 소요)?

+0

관심있는 사람들은이 최근 기사를 확인하십시오. ce] (http : // undocumentedmatlab.co.kr/blog/improve-save-performance /) – Amro

답변

9

버전 7.3의 MAT 파일은 HDF5 형식을 사용하므로이 형식은 파일의 내용을 설명하는 데 상당한 저장 오버 헤드가 있으며, 특히 복잡한 중첩 된 셀 어레이 및 구조의 경우에 그러합니다. MAT- 파일의 이전 버전보다 주요 장점은 64 비트 시스템에 2GB보다 큰 데이터를 저장할 수 있다는 것입니다.

참고 V7과 V7.3 모두 압축 (V6 달리) 유니 인코딩을 사용하면서도 그들은 두 개의 완전히 다른 포맷 ...

참조로되도록 :

+2

감사합니다. @Amro. "중요한 저장 장치 오버 헤드"는 동일한 데이터에 대해 15MB 대신 400MB가 필요하다는 것을 의미하지만, 모든 것을 설명하는 것으로 추측됩니다. –

+5

@AmV : 셀 및 구조 배열을 사용하는 경우 이기종 데이터 형식을 저장할 수 있으며 각 형식을 설명해야합니다. 일반적인 MATLAB "double"행렬 (예 :'M = rand (3000,3000))을 사용하여 두 가지 형식 (v7/v7.3)을 비교하고 v7.mat M -v7을 저장하고 v73.mat M -v7을 저장하십시오. 3 '), 비슷한 파일 크기를 얻게됩니다. 반면에 위의 행렬을 셀 배열 ('M = num2cell (M);')로 바꾸면 크기에 큰 차이가 생깁니다 ... – Amro

+6

http://www.mathworks.com/help도 참조하십시오. MAT 파일 형식에 대한 전체 설명은 /pdf_doc/matlab/matfile_format.pdf를 참조하십시오. HDF5는 범용 형식이기 때문에 헤더에 문자열을 사용하여 일부 유형 정보를 처리합니다 (예 : "MATLAB_class", "double"). MAT 형식에서는 내장 된 Matlab 형식이 2 바이트의 바이너리 마법 쿠키로 설명되므로 MAT 헤더는 56 바이트로 작을 수 있습니다. Linux 또는 cygwin을 사용하는 경우 "h5dump -p"및 "od -c"는 v7.3 파일의 헤더를 표시합니다. –