주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

대용량 TDMS 파일을 MATLAB으로 읽어오기

이 예제는 TDMS 데이터저장소를 사용하여 대용량 TDMS 파일의 데이터를 MATLAB®으로 읽어와서 분석하는 방법을 보여줍니다.

예제 TDMS 파일에는 사인파의 진폭과 위상에 대한 측정 데이터가 포함되어 있습니다. 또한 무작위 시간에 트리거되는 산발적 이벤트를 포함하는 채널 그룹이 있습니다. 예제 파일 자체는 크지 않지만, 대용량 파일 처리 기술을 보여주기 위해 사용됩니다.

TDMS datastore 객체를 사용하면 큰 TDMS 파일을 가능한 크기의 데이터 청크 단위로 반복적으로 MATLAB으로 읽어올 수 있습니다. 각 반복 단계에서 처리되는 데이터의 크기는 관심 시간 간격, 절대적인 샘플 수 또는 기타 그룹 정의에 따라 달라질 수 있습니다.

데이터저장소(Datastore) 정의 및 채널 정보 표시

TDMS 파일 이름이 주어지면, tdmsDatastore 함수를 사용하여 지정된 읽기 크기 및 채널 그룹이 설정된 TDMS datastore 객체를 생성합니다.

fileName = "SineWaveWithEvents.tdms";
readSize = 1000;
ds = tdmsDatastore(fileName, ReadSize=readSize, SelectedChannelGroup="Measured Data");

데이터 저장소 채널 목록을 검토하여 관심 있는 채널 그룹 및 채널 이름을 확인합니다.

ds.ChannelList
ans=4×8 table
    ChannelGroupNumber    ChannelGroupName    ChannelGroupDescription       ChannelName       ChannelDescription    Unit     DataType      NumSamples
    __________________    ________________    _______________________    _________________    __________________    ____    ___________    __________

            1             "Measured Data"               ""               "Amplitude sweep"            ""             ""     "Double"         11000   
            1             "Measured Data"               ""               "Phase sweep"                ""             ""     "Double"         11000   
            2             "Events"                      ""               "Time"                       ""             ""     "Timestamp"          5   
            2             "Events"                      ""               "Description"                ""             ""     "String"             5   

데이터를 MATLAB으로 읽어들이기

한 번에 1000개의 샘플을 읽어서 파일 끝에 도달할 때까지 반복합니다. 데이터저장소 읽기 크기와 선택된 채널 그룹은 위에서 tdmsDatastore 함수를 사용하여 데이터저장소 ds를 생성할 때 이미 정의되었습니다. read 함수는 이러한 파라미터에 의해 제약됩니다. 필요한 반복 횟수를 알 수 없는 경우 hasdata 함수를 사용하십시오.

while(hasdata(ds))
    data = read(ds);     
        % This loop overwrites the last iteration data, 
        % so any analysis of individual data or cumulative
        % reduction operations must happen inside the loop.
end

가장 최근 데이터 청크 시각화

첫 번째 채널 그룹에서 누적 플롯을 사용하여 최근 1000개의 데이터 샘플을 시각화할 수 있습니다.

stackedplot(data{1});

Amplitude and Phase Sweep plot

이벤트 데이터 검토

이벤트 데이터가 포함된 채널 그룹을 읽고 표시합니다. 이렇게 하려면 해당 채널 그룹에 대해 tdmsDatastore 함수를 사용하여 datastore 객체를 재정의해야 합니다. 데이터 세트가 크지 않다고 가정할 때, readall 함수를 사용해 한 번에 모두 가져올 수 있습니다.

ds = tdmsDatastore(fileName, SelectedChannelGroup="Events");
data = readall(ds);
data{1}
ans=5×2 table
                Time                  Description 
    _____________________________    _____________

    2022-01-13 08:51:36.058876037    "Failure 123"
    2022-01-13 08:51:38.558219909    "Failure 123"
    2022-01-13 08:51:40.058685302    "Failure 123"
    2022-01-13 08:51:41.558692932    "Event 4711" 
    2022-01-13 08:51:44.559547424    "Failure 123"