이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
MDF 파일에서 데이터 읽기
이 예제는 MDF 파일에서 채널 데이터를 읽는 방법을 보여줍니다.
파일 세부 정보 보기
파일 이름을 지정하여 mdfInfo를 사용하여 MDF 파일의 메타데이터를 확인합니다.
fileInfo = mdfInfo("VehicleData.mf4")fileInfo =
MDFInfo with properties:
File Details
Name: "VehicleData.mf4"
Path: "/tmp/Bdoc25b_2988451_1430519/tpe4ace63d/vnt-ex94427230/VehicleData.mf4"
Author: "Engineer"
Department: "Automotive"
Project: "Demo"
Subject: "Prototype"
Comment: "Example file"
Version: "4.20"
InitialTimestamp: 2024-11-14 19:16:35.000000000
Creator Details
ProgramIdentifier: "MATLAB"
CreatorVendorName: "The MathWorks, Inc."
CreatorToolName: "MATLAB"
CreatorToolVersion: "25.1.0.2768609 (R2025a) Prerelease"
CreatorUserName: "engineer"
CreatorComment: "Created with Vehicle Network Toolbox"
File Contents
Attachment: [1×7 table]
ChannelGroupCount: 2
Event: [0×8 eventtable]
MDF 파일에서 모든 데이터 읽기
MDF 파일의 모든 데이터를 읽는 가장 쉬운 방법은 파일 이름만 지정하여 mdfRead 함수를 호출하는 것입니다. 각 타임테이블은 해당 채널 그룹에서 읽은 데이터를 나타냅니다.
dataAll = mdfRead("VehicleData.mf4")dataAll=2×1 cell array
{ 751×8 timetable}
{92033×2 timetable}
dataAll{1}ans=751×8 timetable
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
0.08 sec 1685.4 0 59.893 1 150.76 776.41 35.847 0
0.12 sec 1907.2 0 59.839 1 193.42 973.15 65.768 0
0.16 sec 2062 0 59.785 1 227.02 1117.6 101.53 0
0.2 sec 2161.2 0 59.732 1 251.11 1212.8 141.45 0
0.24 sec 2221.4 0 59.678 1 267.24 1264.3 183.86 0
0.28 sec 2257.2 0 59.624 1 276.35 1271.2 227.25 0
0.32 sec 2278.7 0 59.57 1 281.99 1259.5 270.52 0
0.36 sec 2292.4 0 59.517 1 283.39 1229 313.08 0
0.4 sec 2305.1 0 59.463 1 283.29 1193.4 354.43 0
0.44 sec 2317.4 0 59.409 1 282.91 1156.6 394.58 0
0.48 sec 2330.5 0 59.356 1 281.84 1112.8 433.27 0
0.52 sec 2344.5 0 59.302 1 281.19 1073.1 470.53 0
0.56 sec 2359.1 0 59.248 1 279.77 1032.9 506.43 0
0.6 sec 2376.4 0 59.195 1 277.89 993.97 540.92 0
⋮
dataAll{2}ans=92033×2 timetable
time AirFlow FuelRate
______________ _______ ________
0 sec 17.294 1.209
0.00056199 sec 17.263 1.209
0.0033719 sec 17.112 1.209
0.01 sec 16.776 1.1729
0.02 sec 16.316 1.1409
0.03 sec 15.907 1.1124
0.04 sec 15.546 1.0873
0.05 sec 15.228 1.0652
0.055328 sec 15.075 1.0652
0.055328 sec 15.075 1.0652
0.055328 sec 15.075 1.0652
0.06 sec 14.949 1.0458
0.064672 sec 14.832 1.0458
0.07 sec 14.707 1.0289
0.08 sec 14.497 1.0143
0.09 sec 14.317 1.0019
⋮
선택된 채널 그룹에서 데이터 읽기
선택된 채널 그룹에서만 데이터를 읽으려면, 대상 채널 그룹 번호로 지정할 옵션 GroupNumber를 명시하십시오. 채널 그룹 1에서만 데이터를 읽습니다.
dataChanGrp1 = mdfRead("VehicleData.mf4", GroupNumber=1)dataChanGrp1 = 1×1 cell array
{751×8 timetable}
dataChanGrp1{1}ans=751×8 timetable
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
0.08 sec 1685.4 0 59.893 1 150.76 776.41 35.847 0
0.12 sec 1907.2 0 59.839 1 193.42 973.15 65.768 0
0.16 sec 2062 0 59.785 1 227.02 1117.6 101.53 0
0.2 sec 2161.2 0 59.732 1 251.11 1212.8 141.45 0
0.24 sec 2221.4 0 59.678 1 267.24 1264.3 183.86 0
0.28 sec 2257.2 0 59.624 1 276.35 1271.2 227.25 0
0.32 sec 2278.7 0 59.57 1 281.99 1259.5 270.52 0
0.36 sec 2292.4 0 59.517 1 283.39 1229 313.08 0
0.4 sec 2305.1 0 59.463 1 283.29 1193.4 354.43 0
0.44 sec 2317.4 0 59.409 1 282.91 1156.6 394.58 0
0.48 sec 2330.5 0 59.356 1 281.84 1112.8 433.27 0
0.52 sec 2344.5 0 59.302 1 281.19 1073.1 470.53 0
0.56 sec 2359.1 0 59.248 1 279.77 1032.9 506.43 0
0.6 sec 2376.4 0 59.195 1 277.89 993.97 540.92 0
⋮
지정된 이름과 일치하는 채널에서 데이터 읽기
정확히 알려진 채널 이름에서 데이터를 읽으려면, 옵션 Channel를 정확한 채널 이름으로 지정하십시오. "Brake", "Throttle" 및 "FuelRate"라는 이름의 채널에서 데이터를 읽습니다.
dataChanExact = mdfRead("VehicleData.mf4", Channel=["Brake", "Throttle", "FuelRate"])
dataChanExact=2×1 cell array
{ 751×2 timetable}
{92033×1 timetable}
데이터는 두 개의 타임테이블로 반환됨을 유의하십시오. 이는 채널 그룹 1에는 "브레이크" 및 "스로틀" 채널이 포함되어 있는 반면, 채널 그룹 2에는 "연료유량" 채널이 포함되어 있기 때문입니다.
dataChanExact{1}ans=751×2 timetable
time Brake Throttle
________ _____ ________
0 sec 0 60
0.04 sec 0 59.946
0.08 sec 0 59.893
0.12 sec 0 59.839
0.16 sec 0 59.785
0.2 sec 0 59.732
0.24 sec 0 59.678
0.28 sec 0 59.624
0.32 sec 0 59.57
0.36 sec 0 59.517
0.4 sec 0 59.463
0.44 sec 0 59.409
0.48 sec 0 59.356
0.52 sec 0 59.302
0.56 sec 0 59.248
0.6 sec 0 59.195
⋮
dataChanExact{2}ans=92033×1 timetable
time FuelRate
______________ ________
0 sec 1.209
0.00056199 sec 1.209
0.0033719 sec 1.209
0.01 sec 1.1729
0.02 sec 1.1409
0.03 sec 1.1124
0.04 sec 1.0873
0.05 sec 1.0652
0.055328 sec 1.0652
0.055328 sec 1.0652
0.055328 sec 1.0652
0.06 sec 1.0458
0.064672 sec 1.0458
0.07 sec 1.0289
0.08 sec 1.0143
0.09 sec 1.0019
⋮
부분적으로 알려진 채널 이름에서 데이터를 읽으려면 와일드카드 문자를 사용하여 Channel 옵션을 지정하십시오. 이름에 "토크"라는 부분 문자열이 포함된 채널에서 데이터를 읽습니다.
dataChanWildcard = mdfRead("VehicleData.mf4", Channel="*Torque*")
dataChanWildcard=2×1 cell array
{751×2 timetable}
{ 0×0 timetable}
인덱스 2의 타임테이블이 비어 있음을 유의하십시오. 이는 "*토크*"와 일치하는 모든 채널이 채널 그룹 1에 존재하기 때문입니다.
dataChanWildcard{1}ans=751×2 timetable
time ImpellerTorque OutputTorque
________ ______________ ____________
0 sec 52.919 282.65
0.04 sec 101.4 532.63
0.08 sec 150.76 776.41
0.12 sec 193.42 973.15
0.16 sec 227.02 1117.6
0.2 sec 251.11 1212.8
0.24 sec 267.24 1264.3
0.28 sec 276.35 1271.2
0.32 sec 281.99 1259.5
0.36 sec 283.39 1229
0.4 sec 283.29 1193.4
0.44 sec 282.91 1156.6
0.48 sec 281.84 1112.8
0.52 sec 281.19 1073.1
0.56 sec 279.77 1032.9
0.6 sec 277.89 993.97
⋮
테이블을 사용하여 채널에서 데이터 읽기
mdfChannelInfo를 사용하여 대상 채널을 필터링한 후, mdfRead에서 얻은 테이블을 활용해 나열된 채널에서만 데이터를 읽을 수 있습니다.
먼저, mdfChannelInfo를 사용하여 "*RPM" 또는 "AirFlow"와 일치하는 채널 이름을 찾으십시오.
chanInfo = mdfChannelInfo("VehicleData.mf4", Channel=["*RPM", "AirFlow"])
chanInfo=3×13 table
Name GroupNumber GroupNumSamples GroupAcquisitionName GroupComment GroupSourceName GroupSourcePath DisplayName Unit Comment ExtendedNamePrefix SourceName SourcePath
_________________ ___________ _______________ ____________________ ___________________________________________________________________________ _______________ _______________ ___________ ____ ___________ __________________ ___________ ___________
"AirFlow" 2 92033 <undefined> Simulation of engine gas dynamics. <undefined> <undefined> "" g/s <undefined> <undefined> <undefined> <undefined>
"EngineRPM" 1 751 <undefined> Simulation of an automatic transmission controller during passing maneuver. <undefined> <undefined> "" rpm <undefined> <undefined> <undefined> <undefined>
"TransmissionRPM" 1 751 <undefined> Simulation of an automatic transmission controller during passing maneuver. <undefined> <undefined> "" rpm <undefined> <undefined> <undefined> <undefined>
선택적 인수 Channel를 mdfChannelInfo가 반환하는 테이블로 지정하여 mdfRead 함수를 사용하십시오. 이 코드는 chanInfo 테이블에 나열된 세 개의 채널에서 데이터를 한 번에 읽습니다.
dataChanTable = mdfRead("VehicleData.mf4", Channel=chanInfo)dataChanTable=2×1 cell array
{ 751×2 timetable}
{92033×1 timetable}
dataChanTable{1}ans=751×2 timetable
time EngineRPM TransmissionRPM
________ _________ _______________
0 sec 1000 0
0.04 sec 1383.3 13.593
0.08 sec 1685.4 35.847
0.12 sec 1907.2 65.768
0.16 sec 2062 101.53
0.2 sec 2161.2 141.45
0.24 sec 2221.4 183.86
0.28 sec 2257.2 227.25
0.32 sec 2278.7 270.52
0.36 sec 2292.4 313.08
0.4 sec 2305.1 354.43
0.44 sec 2317.4 394.58
0.48 sec 2330.5 433.27
0.52 sec 2344.5 470.53
0.56 sec 2359.1 506.43
0.6 sec 2376.4 540.92
⋮
dataChanTable{2}ans=92033×1 timetable
time AirFlow
______________ _______
0 sec 17.294
0.00056199 sec 17.263
0.0033719 sec 17.112
0.01 sec 16.776
0.02 sec 16.316
0.03 sec 15.907
0.04 sec 15.546
0.05 sec 15.228
0.055328 sec 15.075
0.055328 sec 15.075
0.055328 sec 15.075
0.06 sec 14.949
0.064672 sec 14.832
0.07 sec 14.707
0.08 sec 14.497
0.09 sec 14.317
⋮
인덱스 범위 내 데이터 읽기
지정된 인덱스 범위 내의 데이터 하위 집합만 읽으려면 시작 및 종료 인덱스를 제공하기 위해 IndexRange 옵션을 지정하십시오. 인덱스 101부터 105 사이의 두 채널 그룹 모두에서 데이터를 읽으십시오.
dataByIndex = mdfRead("VehicleData.mf4", IndexRange=[101, 105])dataByIndex=2×1 cell array
{5×8 timetable}
{5×2 timetable}
dataByIndex{1}ans=5×8 timetable
time EngineRPM Brake Throttle Gear ImpellerTorque OutputTorque TransmissionRPM VehicleSpeed
________ _________ _____ ________ ____ ______________ ____________ _______________ ____________
4 sec 3138.5 0 54.631 2 235.21 340.98 1964.5 0
4.04 sec 3151.6 0 54.577 2 234.57 340.09 1975.5 0
4.08 sec 3164.6 0 54.523 2 233.93 339.2 1986.3 0
4.12 sec 3177.6 0 54.47 2 233.29 338.31 1997.2 0
4.16 sec 3190.4 0 54.416 2 232.65 337.43 2008 0
dataByIndex{2}ans=5×2 timetable
time AirFlow FuelRate
________ _______ ________
0.89 sec 19.421 1.3439
0.9 sec 19.492 1.3486
0.91 sec 19.562 1.3532
0.92 sec 19.631 1.3577
0.93 sec 19.699 1.3622
시간 범위 내 데이터 읽기
지정된 시간 범위 내의 데이터 하위 집합만 읽으려면 시작 시간과 종료 시간을 제공하기 위해 TimeRange 옵션을 지정하십시오. 1.5초에서 2초 사이에 두 채널 그룹 모두에서 데이터를 읽습니다.
dataByTime = mdfRead("VehicleData.mf4", TimeRange=seconds([1.5, 2]))dataByTime=2×1 cell array
{13×8 timetable}
{51×2 timetable}
dataByTime{1}ans=13×8 timetable
time EngineRPM Brake Throttle Gear ImpellerTorque OutputTorque TransmissionRPM VehicleSpeed
________ _________ _____ ________ ____ ______________ ____________ _______________ ____________
1.52 sec 2969 0 57.96 1 240.51 574.51 1106.7 0
1.56 sec 3006.7 0 57.906 1 238.7 570.4 1125.9 0
1.6 sec 3044.4 0 57.852 1 237.26 567.2 1144.9 0
1.64 sec 3082.4 0 57.799 1 235.33 562.79 1163.8 0
1.68 sec 3120.3 0 57.745 1 233.87 559.47 1182.6 0
1.72 sec 3157.9 0 57.691 1 232.51 556.4 1201.3 0
1.76 sec 3195 0 57.638 1 231.18 553.41 1219.9 0
1.8 sec 3232 0 57.584 2 510.18 1093.3 1238.3 0
1.84 sec 2899.9 0 57.53 2 384.51 755.8 1268.9 0
1.88 sec 2742.1 0 57.477 2 327.29 607.68 1291.4 0
1.92 sec 2665.8 0 57.423 2 299 534.91 1310.4 0
1.96 sec 2631.3 0 57.369 2 284.28 496.35 1327.5 0
2 sec 2617.6 0 57.315 2 276.76 475.14 1343.7 0
dataByTime{2}ans=51×2 timetable
time AirFlow FuelRate
________ _______ ________
1.5 sec 22.414 1.5385
1.51 sec 22.446 1.5405
1.52 sec 22.477 1.5425
1.53 sec 22.508 1.5445
1.54 sec 22.539 1.5464
1.55 sec 22.569 1.5484
1.56 sec 22.598 1.5502
1.57 sec 22.628 1.5521
1.58 sec 22.656 1.554
1.59 sec 22.685 1.5558
1.6 sec 22.713 1.5576
1.61 sec 22.741 1.5593
1.62 sec 22.768 1.5611
1.63 sec 22.795 1.5628
1.64 sec 22.822 1.5645
1.65 sec 22.849 1.5662
⋮
절대적 타임스탬프로 데이터 읽기
MDF 파일의 초기 타임스탬프를 고려하여 datetime에서 절대적 타임스탬프를 반환하려면, mdfRead 호출 시 AbsoluteTime 옵션을 true로 지정하십시오.
dataAbsTime = mdfRead("VehicleData.mf4", AbsoluteTime=true)dataAbsTime=2×1 cell array
{ 751×8 timetable}
{92033×2 timetable}
dataAbsTime{1}ans=751×8 timetable
time EngineRPM Brake Throttle Gear ImpellerTorque OutputTorque TransmissionRPM VehicleSpeed
_____________________________ _________ _____ ________ ____ ______________ ____________ _______________ ____________
2024-11-14 19:16:35.000000000 1000 0 60 1 52.919 282.65 0 0
2024-11-14 19:16:35.040000000 1383.3 0 59.946 1 101.4 532.63 13.593 0
2024-11-14 19:16:35.080000000 1685.4 0 59.893 1 150.76 776.41 35.847 0
2024-11-14 19:16:35.120000000 1907.2 0 59.839 1 193.42 973.15 65.768 0
2024-11-14 19:16:35.160000000 2062 0 59.785 1 227.02 1117.6 101.53 0
2024-11-14 19:16:35.200000000 2161.2 0 59.732 1 251.11 1212.8 141.45 0
2024-11-14 19:16:35.240000000 2221.4 0 59.678 1 267.24 1264.3 183.86 0
2024-11-14 19:16:35.280000000 2257.2 0 59.624 1 276.35 1271.2 227.25 0
2024-11-14 19:16:35.320000000 2278.7 0 59.57 1 281.99 1259.5 270.52 0
2024-11-14 19:16:35.360000000 2292.4 0 59.517 1 283.39 1229 313.08 0
2024-11-14 19:16:35.400000000 2305.1 0 59.463 1 283.29 1193.4 354.43 0
2024-11-14 19:16:35.440000000 2317.4 0 59.409 1 282.91 1156.6 394.58 0
2024-11-14 19:16:35.480000000 2330.5 0 59.356 1 281.84 1112.8 433.27 0
2024-11-14 19:16:35.520000000 2344.5 0 59.302 1 281.19 1073.1 470.53 0
2024-11-14 19:16:35.560000000 2359.1 0 59.248 1 279.77 1032.9 506.43 0
2024-11-14 19:16:35.600000000 2376.4 0 59.195 1 277.89 993.97 540.92 0
⋮
dataAbsTime{2}ans=92033×2 timetable
time AirFlow FuelRate
_____________________________ _______ ________
2024-11-14 19:16:35.000000000 17.294 1.209
2024-11-14 19:16:35.000561989 17.263 1.209
2024-11-14 19:16:35.003371932 17.112 1.209
2024-11-14 19:16:35.010000000 16.776 1.1729
2024-11-14 19:16:35.020000000 16.316 1.1409
2024-11-14 19:16:35.030000000 15.907 1.1124
2024-11-14 19:16:35.040000000 15.546 1.0873
2024-11-14 19:16:35.050000000 15.228 1.0652
2024-11-14 19:16:35.055327997 15.075 1.0652
2024-11-14 19:16:35.055327997 15.075 1.0652
2024-11-14 19:16:35.055327997 15.075 1.0652
2024-11-14 19:16:35.060000000 14.949 1.0458
2024-11-14 19:16:35.064672003 14.832 1.0458
2024-11-14 19:16:35.070000000 14.707 1.0289
2024-11-14 19:16:35.080000000 14.497 1.0143
2024-11-14 19:16:35.090000000 14.317 1.0019
⋮