Main Content

cdfread

CDF(Common Data Format) 파일에서 데이터 읽어 들이기

구문

data = cdfread(filename)
data = cdfread(filename,Name1,Value1,...,NameN,ValueN)
[data,info] = cdfread(filename,...)

설명

data = cdfread(filename)filename에서 지정한 CDF(Common Data Format) 파일의 모든 데이터를 읽어 들입니다. filename을 string형 스칼라 또는 문자형 벡터로 지정합니다. CDF 데이터셋은 일반적으로 특정 데이터형의 변수 세트를 포함하며 각각은 연결된 레코드 세트를 가집니다. 변수는 각 레코드를 통해 관측값이 기록된 특정 시간을 표시하는 시간 값을 나타낼 수 있습니다. cdfread는, 각 열이 변수를 나타내고 각 행이 변수와 연결된 레코드를 나타내는 셀형 배열의 모든 데이터를 반환합니다. 변수와 연결된 레코드의 개수가 다른 경우 cdfread는 CDF 파일에 정의된 채우기 값(Pad Value)으로 행을 채워 사각형 셀형 배열을 만듭니다.

참고

cdfread는 임시 파일을 만들기 때문에 현재 작업 디렉터리는 쓰기가 가능해야 합니다.

data = cdfread(filename,Name1,Value1,...,NameN,ValueN)은 파일의 데이터를 읽어 들입니다. 여기서 Name1, …, NameN은 다음 표에 나와 있는 이름-값 인수일 수 있습니다.

[data,info] = cdfread(filename,...)은 CDF 파일에 대한 세부 정보를 info 구조체에 반환합니다.

이름-값 인수
"Records"

읽어 들일 레코드를 지정하는 벡터. 레코드 번호는 0부터 시작합니다. cdfread는 읽어 들인 레코드와 동일한 개수의 행과 변수와 동일한 개수의 열을 갖는 셀형 배열을 반환합니다.

"Variables"

파일에서 읽어 들일 단일 변수의 이름을 지정하는 string형 스칼라 또는 문자형 벡터. 또는 파일에서 읽어 들일 하나 이상의 변수의 이름을 지정하는 1×n 또는 n×1 셀형 배열. 여기서 n은 파일에 있는 변수의 총 개수보다 작거나 같아야 합니다. cdfread는 셀형 배열을 반환합니다. 이 배열은 읽어 들인 변수와 동일한 개수의 열과 읽어 들인 레코드와 동일한 개수의 행을 갖습니다.

"Slices"

m×3 배열. 여기서 각 행은 변수의 특정 차원을 따라 읽어 들이기 시작할 위치, 해당 차원에서 사용할 건너뛰기 간격(각 항목마다, 두 항목마다 등) 및 해당 차원에서 읽어 들일 값의 총 개수를 지정합니다. m은 변수의 차원 수보다 작거나 같아야 합니다. m이 총 차원 수보다 작은 경우 cdfread는 지정되지 않은 차원의 모든 값을 읽습니다([0 1 n]에서 n은 차원의 총 요소 개수임).

참고: Slices 이름-값 인수는 단일 변수를 처리하는 방법을 설명하므로 Variables 이름-값 인수와 함께 사용해야 합니다.

"DatetimeType"

CDF_TIME_TT2000CDF_EPOCH 데이터형의 반환 유형을 제어하는 string형 스칼라 또는 문자형 벡터. DatetimeType"datetime"(CDF_TIME_TT2000의 디폴트 값)으로 설정되면, cdfread는 값을 datetime형으로 반환합니다. DatetimeType"native"로 설정되면, cdfreadCDF_TIME_TT2000 값을 int64형으로, CDF_EPOCH 값을 double형으로 반환합니다.

"CombineRecords"

cdfread가 파일에서 읽은 CDF 데이터셋을 반환하는 방법을 지정하는 논리값. CombineRecordsfalse(디폴트 값)로 설정되면 cdfread는 m×n 셀형 배열에 데이터를 저장합니다. 여기서 m은 레코드의 개수이고 n은 요청된 변수의 개수입니다. CombineRecordstrue로 설정되면 cdfread는 특정 변수의 모든 레코드를 출력 셀형 배열의 단일 셀에 결합합니다. cdfread는 이 셀에 스칼라 데이터를 열 배열로 저장합니다. cdfread는 비 스칼라 및 문자열 데이터의 차원 수를 확장합니다. 예를 들어, cdfread는 각 레코드에 대해 20×30 배열을 갖는 1,000요소를 만드는 대신에 모든 레코드를 1000×20×30 배열로 단일 셀에 저장합니다.

참고: Records 이름-값 인수를 사용하여 읽을 레코드를 지정하면 CombineRecords 이름-값 인수를 사용할 수 없습니다.

참고: Variables 이름-값 인수로 단일 변수를 읽을 때 CombineRecords 이름-값 인수가 true인 경우 cdfread는 해당 데이터를 m×n 숫자형 배열 또는 문자형 배열로 반환합니다. 해당 함수는 데이터를 셀형 배열에 할당하지 않습니다.

참고

큰 데이터 파일의 작업 성능을 개선하려면 CombineRecords 이름-값 인수를 사용하십시오.

참고

성능을 개선시키려면 파일을 열 때 CDF 라이브러리가 기본적으로 실행하는 파일 유효성 검사(Validation)를 끄십시오. 자세한 내용은 cdflib.setValidate를 참조하십시오.

예제

모두 축소

CDF 파일의 모든 데이터를 읽어 들입니다.

data = cdfread("example_364.cdf");
whos data
  Name       Size            Bytes  Class    Attributes

  data      24x8             32608  cell               

CDF 변수 TimeTemperature에서 데이터를 읽습니다.

data = cdfread("example_364.cdf","Variables",{"Time","Temperature"});
whos data
  Name       Size            Bytes  Class    Attributes

  data      24x2              9504  cell               

CDF 변수 multidimensional의 첫 번째 차원의 첫 번째 값, 두 번째 차원의 두 번째 값, 세 번째 차원의 첫 번째 값 및 세 번째 값과 나머지 차원의 모든 값을 읽어 들입니다.

dataSlice = cdfread("example_364.cdf","Variables","multidimensional", ...
                    "Slices",[0 1 1; 1 1 1; 0 2 2]);
dataSlice
dataSlice = 1x1 cell array
    {1x1x2x4 uint8}

또는 전체 변수를 data로 읽어 들인 다음 행렬 인덱싱을 사용합니다.

data = cdfread("example_364.cdf","Variables","multidimensional");
dataIndex = data{1}(1,2,[1 3],:);
whos dataIndex
  Name           Size               Bytes  Class    Attributes

  dataIndex      1x1x2x4                8  uint8              

데이터셋의 레코드를 축소하고 CDF_EPOCHCDF_TIME_TT2000 데이터형을 MATLAB datetime형 값으로 변환합니다.

data = cdfread("example_364.cdf","CombineRecords",true, ...
               "DatetimeType","datetime");
whos data
  Name      Size            Bytes  Class    Attributes

  data      1x8              7408  cell               

example_364.cdf 파일의 데이터를 탐색합니다.

info = cdfinfo("example_364.cdf");
info.Variables
ans=8×6 cell array
    {'Time'            }    {[    1 1]}    {[24]}    {'epoch' }    {'T/'    }    {'Full'}
    {'Longitude'       }    {[    2 2]}    {[ 1]}    {'int8'  }    {'F/FT'  }    {'Full'}
    {'Latitude'        }    {[    2 2]}    {[ 1]}    {'int8'  }    {'F/TF'  }    {'Full'}
    {'Data'            }    {[  2 2 4]}    {[ 1]}    {'double'}    {'T/TTT' }    {'Full'}
    {'multidimensional'}    {[2 2 3 4]}    {[ 1]}    {'uint8' }    {'T/TTTT'}    {'Full'}
    {'Temperature'     }    {[    3 2]}    {[10]}    {'int16' }    {'T/TT'  }    {'Full'}
    {'multiInt8'       }    {[    2 3]}    {[ 2]}    {'int64' }    {'T/TT'  }    {'Full'}
    {'tt2000'          }    {[    1 1]}    {[ 8]}    {'tt2000'}    {'T/'    }    {'Full'}

CDF_TIME_TT2000 데이터를 읽어옵니다. 기본적으로 cdfread는 데이터를 datetime형 값으로 변환합니다.

tt2000Data = cdfread("example_364.cdf","Variables","tt2000");

세 번째, 네 번째, 다섯 번째 데이터 값을 살펴봅니다.

tt2000Data{3:5}
ans = datetime
   2016-12-31T23:59:59.100200300Z

ans = datetime
   2016-12-31T23:59:60.100200300Z

ans = datetime
   2017-01-01T00:00:00.100200300Z

네이티브 형식의 CDF_TIME_TT2000 데이터를 CDF_TIME_TT2000 타임스탬프로 읽어옵니다.

tt2000Data = cdfread("example_364.cdf","Variables","tt2000", ...
                     "DatetimeType","native");

데이터를 개별 시간 성분으로 분해합니다. 세 번째, 네 번째, 다섯 번째 타임스탬프의 성분을 표시합니다.

timeArr = cdflib.breakdownTT2000([tt2000Data{:}]);
timeArr(:,3:5)
ans = 9×3

        2016        2016        2017
          12          12           1
          31          31           1
          23          23           0
          59          59           0
          59          60           0
         100         100         100
         200         200         200
         300         300         300

제한 사항

  • cdfread 함수는 ASCII 이외의 형식으로 인코딩된 데이터를 지원하지 않습니다. CDF 파일의 변수 이름, 특성 이름, 변수 값, 특성 값은 모두 7비트 ASCII로 인코딩되어야 합니다. ASCII 이외의 형식으로 인코딩된 파일을 읽으려고 하면 오류가 발생하거나 데이터의 문자가 손상됩니다.

버전 내역

R2006a 이전에 개발됨

모두 확장