주요 콘텐츠

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

mdfRead

MDF 파일에서 채널 데이터 읽기

R2023a 이후

설명

data = mdfRead(mdfFileName)는 지정된 MDF 파일에서 모든 채널의 모든 데이터를 읽고, 그 출력을 셀 배열 data에 할당합니다. 출력 셀 배열은 반환된 데이터의 각 채널 그룹에 대한 타임테이블을 포함하며, 여기서 셀 배열 인덱스는 반환된 채널 그룹의 순서를 나타냅니다.

data = mdfRead(___,Name=Value)는 이름-값 인수를 통해 특정 채널 및 채널 그룹을 필터링하고, 메타데이터를 요청하며, 기타 옵션을 적용할 수 있게 합니다.

예제

예제

모두 축소

MDF 파일에서 사용 가능한 모든 데이터를 읽습니다.

data = mdfRead("VehicleData.mf4");
head(data{1}) % First timetable in returned cell array.
      time      EngineRPM    Brake    Throttle    Gear    ImpellerTorque    OutputTorque    TransmissionRPM    VehicleSpeed
    ________    _________    _____    ________    ____    ______________    ____________    _______________    ____________

    0 sec          1000        0           60      1          52.919           282.65                0                 0   
    0.04 sec     1383.3        0       59.946      1           101.4           532.63           13.593           0.30047   
    0.08 sec     1685.4        0       59.893      1          150.76           776.41           35.847            0.7924   
    0.12 sec     1907.2        0       59.839      1          193.42           973.15           65.768            1.4538   
    0.16 sec       2062        0       59.785      1          227.02           1117.6           101.53            2.2443   
    0.2 sec      2161.2        0       59.732      1          251.11           1212.8           141.45            3.1268   
    0.24 sec     2221.4        0       59.678      1          267.24           1264.3           183.86            4.0644   
    0.28 sec     2257.2        0       59.624      1          276.35           1271.2           227.25            5.0234   

변환 규칙을 적용하지 않고 원시 데이터를 읽습니다.

dataraw = mdfRead("VehicleData.mf4",ReadRaw=true);

지정된 채널 이름에 대해 MDF 파일에서 사용 가능한 모든 데이터를 읽습니다.

data = mdfRead("VehicleData.mf4",Channel=["*Torque" "*Rate"]);

인덱스를 사용하여 시작점과 끝점을 지정하여 MDF 파일에서 데이터 범위를 읽습니다.

data = mdfRead("VehicleData.mf4",IndexRange=[65,128]);

지정된 시간 범위에 걸쳐 MDF 파일에서 데이터의 범위를 읽습니다.

data = mdfRead("VehicleData.mf4",TimeRange=seconds([0,30]));

mdfChannelInfo 함수로 식별된 채널에서 데이터를 읽습니다.

채널 테이블을 가져와서 채널의 이름과 그룹 번호를 표시합니다.

chanInfoTable = mdfChannelInfo("VehicleData.mf4",Channel=["*Torque","*Speed"]);
chanInfoTable(:,1:3) % Partial display.
ans = 
  3×3 table

          Name          GroupNumber    GroupNumSamples
    ________________    ___________    _______________

    "ImpellerTorque"         1               751
    "OutputTorque"           1               751
    "VehicleSpeed"           1               751

지정된 채널에서 데이터를 읽습니다.

data = mdfRead("VehicleData.mf4",Channel=chanInfoTable);
head(data{1}) % View top of data timetable.
      time      ImpellerTorque    OutputTorque    VehicleSpeed
    ________    ______________    ____________    ____________

    0 sec           52.919           282.65               0
    0.04 sec         101.4           532.63         0.30047
    0.08 sec        150.76           776.41          0.7924
    0.12 sec        193.42           973.15          1.4538   
    0.16 sec        227.02           1117.6          2.2443
    0.2 sec         251.11           1212.8          3.1268
    0.24 sec        267.24           1264.3          4.0644
    0.28 sec        276.35           1271.2          5.0234

MDF 파일에서 채널 그룹 메타데이터 및 채널 메타데이터와 함께 데이터를 타임테이블로 읽어옵니다.

MDF 파일의 메타데이터를 포함한 모든 데이터를 읽은 후, 첫 번째 채널 그룹의 메타데이터를 확인합니다.

dataGrp1 = mdfRead("VehicleData.mf4",IncludeMetadata=true);
dataGrp1{1}.Properties.CustomProperties
ans = 

CustomProperties with properties:

           ChannelGroupAcquisitionName: ""
                   ChannelGroupComment: "Simulation of an automatic transmission controller during passing maneuver."
                ChannelGroupSourceName: ""
                ChannelGroupSourcePath: ""
             ChannelGroupSourceComment: ""
                ChannelGroupSourceType: Unspecified
             ChannelGroupSourceBusType: Unspecified
    ChannelGroupSourceBusChannelNumber: 0
                    ChannelDisplayName: [""    ""    ""    ""    ""    ""    ""    ""]
                        ChannelComment: [""    ""    ""    ""    ""    ""    ""    ""]
                           ChannelUnit: ["rpm"    "ft*lbf"    "%"    ""    "ft*lbf"    "ft*lbf"    "rpm"    "mph"]
                           ChannelType: [FixedLength    FixedLength    FixedLength    FixedLength    FixedLength    FixedLength    …    ]
                       ChannelDataType: [RealLittleEndian    IntegerUnsignedLittleEndian    RealLittleEndian    …    ]
                        ChannelNumBits: [64 8 64 8 64 64 64 64]
                  ChannelComponentType: [None    None    None    None    None    None    None    None]
                ChannelCompositionType: [None    None    None    None    None    None    None    None]
                     ChannelSourceName: [""    ""    ""    ""    ""    ""    ""    ""]
                     ChannelSourcePath: [""    ""    ""    ""    ""    ""    ""    ""]
                  ChannelSourceComment: [""    ""    ""    ""    ""    ""    ""    ""]
                     ChannelSourceType: [Unspecified    Unspecified    Unspecified    Unspecified    Unspecified    Unspecified    …    ]
                  ChannelSourceBusType: [Unspecified    Unspecified    Unspecified    Unspecified    Unspecified    Unspecified    …    ]
         ChannelSourceBusChannelNumber: [0 0 0 0 0 0 0 0]
                     ChannelReadOption: [All    All    All    All    All    All    All    All]

입력 인수

모두 축소

MDF 파일 이름으로, 문자열 또는 문자형 벡터로 지정되며 필요한 전체 경로 또는 상대 경로를 포함합니다. URL을 사용하여 원격 서버에 있는 파일을 지정할 수 있습니다.

액세스하는 위치에 따라 mdfFileName는 다음과 같은 형태를 취할 수 있습니다.

위치

형식

현재 폴더 또는 MATLAB® 경로

현재 폴더 또는 MATLAB 경로에 있는 파일에 액세스하려면, 파일 확장자를 포함하여 filename에 파일 이름을 지정하십시오.

예: "myMdfFile.mf4"

다른 폴더들

현재 폴더가 아닌 다른 폴더에 있는 파일에 액세스하려면 filename에 전체 경로명 또는 상대 경로명을 지정하십시오.

예: "C:\myFolder\myMdfFile.mf4"

예: "\dataDir\myMdfFile.mf4"

원격지

원격 위치의 파일에 액세스하려면, filename는 다음 형식의 균일 자원 위치 지정자(URL)로 지정된 파일의 전체 경로를 포함해야 합니다:

scheme://path_to_file/myMdfFile.mf4

원격 위치에 기반하여, scheme는 이 테이블의 값 중 하나일 수 있습니다.

원격 위치scheme
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs
HDFS™hdfs

자세한 내용은 원격 데이터로 작업하기 항목을 참조하십시오.

예: "s3://bucketname/path_to_file/myMdfFile.mf4"

데이터형: string | char

이름-값 인수

모두 축소

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: GroupNumber=2

채널 그룹 번호. 하나의 그룹에 대해서는 숫자 스칼라로, 여러 그룹에 대해서는 숫자 벡터로 지정됩니다. 이 함수는 지정된 채널 그룹에서만 발견된 채널의 데이터를 반환합니다. 지정되지 않은 경우, 모든 채널 그룹의 데이터가 반환됩니다.

예: GroupNumber=[1,2]

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

데이터를 반환할 채널 이름으로, 문자열 또는 문자열로 구성된 배열, 문자형 벡터 또는 문자형 벡터로 구성된 셀 배열로 지정됩니다. 여러 채널 이름 중 하나와 일치시키려면 배열을 사용하십시오. 와일드카드는 부분 일치를 허용합니다. 지정되지 않은 경우 모든 채널의 데이터가 반환됩니다.

mdfChannelInfo 함수로 생성된 테이블을 사용하여 채널을 지정할 수도 있습니다. 테이블을 사용하여 채널을 지정할 때 GroupNumber 옵션은 무시됩니다.

예: Channel=["*Rate","*Speed"]

데이터형: string | char | cell | table

true 또는 false로 지정된 절대적 타임스탬프를 반환합니다. true가 지정된 경우, 반환된 타임테이블은 datetime 형식의 절대적 타임스탬프를 가집니다. false가 지정된 경우, 반환된 타임테이블은 파일의 초기 타임스탬프로부터 경과된 상대적 타임스탬프를 포함합니다. 디폴트 값은 false로, 상대적 타임스탬프를 반환합니다.

예: AbsoluteTime=true

데이터형: logical

데이터를 읽을 구간의 시작 시간과 종료 시간으로, 2개 요소 벡터로 지정됩니다. AbsoluteTime=true인 경우, TimeRange를 datetime형 벡터로 지정하십시오. AbsoluteTime=false (기본값)인 경우, duration형 벡터로 TimeRange를 지정하십시오. 지정되지 않은 경우, 모든 데이터 샘플이 읽힙니다. 이 옵션은 IndexRange와 함께 사용할 수 없습니다.

예: TimeRange=seconds([0,60])

데이터형: datetime | duration

데이터를 읽을 구간의 시작 인덱스와 끝 인덱스로, 2개 요소 벡터로 지정됩니다. 인덱스는 포괄적입니다. 지정되지 않은 경우, 모든 데이터 샘플이 읽힙니다. 이 옵션은 TimeRange와 함께 사용할 수 없습니다.

예: IndexRange=[65:128]

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

true 또는 false로 지정된 원시 데이터 값을 읽습니다. true로 지정된 경우 데이터는 원시 값으로 읽힙니다. false로 지정된 경우 데이터는 물리적 값으로 읽힙니다. 디폴트 값은 false입니다.

예: ReadRaw=true

데이터형: logical

결과에 채널 그룹 메타데이터와 채널 메타데이터를 포함시키되, true 또는 false로 지정합니다. true인 경우, 메타데이터가 반환된 각 타임테이블에 사용자 지정 속성으로 추가됩니다. 메타데이터는 비어 있지 않은 출력 타임테이블에만 포함됩니다. false인 경우 메타데이터가 포함되지 않습니다. 디폴트 값은 false입니다.

mdfRead가 각 채널 그룹에 대해 타임테이블을 반환하기 때문에, 이 채널 그룹 및 해당 그룹 내 모든 채널의 메타데이터가 타임테이블에 사용자 지정 속성으로 추가됩니다. 타임테이블의 tt 사용자 지정 속성에 tt.Properties.CustomProperties에서 액세스할 수 있습니다.

mdfRead 함수는 메타데이터가 포함될 때 실행 시간이 더 오래 걸립니다.

예: IncludeMetadata=true

데이터형: logical

각 채널 그룹 출력 타임테이블에 이벤트 테이블을 연결합니다. 지정된 형식은 true 또는 false입니다. true (기본값)일 때, 이 함수는 각 타임테이블 출력에 이벤트테이블을 연결하며, 이는 반환된 타임테이블의 속성에서 tt.Properties.Events로 액세스할 수 있습니다.

자세한 내용은 예제 Work with MDF Events를 참조하십시오.

예: IncludeEvents=false

데이터형: logical

MDF 파일에서 유효성 데이터를 읽기 위한 지시사항으로, 다음 문자열 값 중 하나로 지정됩니다:

  • "include" (기본값) — 유효성 데이터를 읽고 반환된 타임테이블의 사용자 지정 속성인 tt.Properties.CustomProperties.Validity에 저장합니다.

  • "ignore" — 유효성 데이터를 읽지 마십시오.

  • "replace" — 유효성 데이터를 읽고 모든 무효 샘플을 MATLAB missing 값으로 대체합니다. 잘못된 샘플을 포함하는 모든 정수 채널은 double형으로 변환됩니다.

자세한 내용은 예제 Read Validity Data from MDF Files를 참조하십시오.

예: ValidityRule="replace"

데이터형: char | string

출력 인수

모두 축소

채널 데이터를 각 그룹별 타임테이블이 포함된 timetable형으로 구성된 셀형 배열로 반환합니다.

제한 사항

  • mdfRead는 3차원 이상의 Array 채널을 지원하지 않습니다.

  • 중첩된 채널 구성에서 읽기는 지원되지 않습니다. 단순 구조 채널이나 Array 채널에서는 읽을 수 있지만, 복합 신호의 구조체나 배열에서는 읽을 수 없습니다.

  • mdfRead는 부분 변환 규칙이 적용된 채널에서 읽기를 지원하지 않습니다.

버전 내역

R2023a에 개발됨

모두 확장