このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MDF ファイルからデータを読み取る
この例では、MDF ファイルからチャネル データを読み取る方法を示します。
ファイルの詳細を表示
ファイル名を指定して mdfInfo を使用して MDF ファイルのメタデータを表示します。
fileInfo = mdfInfo("VehicleData.mf4")fileInfo =
MDFInfo with properties:
File Details
Name: "VehicleData.mf4"
Path: "/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/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 関数を呼び出すことです。各 timetable は、対応するチャネル グループから読み取られたデータを表します。
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}
データは 2 つの timetable で返されることに注意してください。これは、チャネル「Brake」と「Throttle」がチャネル グループ 1 に存在し、チャネル「FuelRate」がチャネル グループ 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 を指定します。名前に部分文字列「Torque」が含まれるチャネルからデータを読み取ります。
dataChanWildcard = mdfRead("VehicleData.mf4", Channel="*Torque*")
dataChanWildcard=2×1 cell array
{751×2 timetable}
{ 0×0 timetable}
インデックス 2 の timetable は空であることに注意してください。これは、「*Torque*」に一致するすべてのチャネルがチャネル グループ 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 テーブルにリストされている 3 つのチャネルからデータが一度に読み取られます。
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
⋮