このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
未ファイナライズおよび未ソートのMDFファイルを扱う
この例では、ファイナライズされていない、またはソートされていない MDF ファイルを操作する方法を示します。この例で使用されている未完成の MDF ファイル (MDFUnfinalized.MF4) は、CSS Electronics の CANedge2 CAN バス データ ロガーによって記録されました。
未ファイナライズおよび未ソートのMDFファイルの概要
予期しない電源切断やアプリケーション エラーにより、MDF ファイル作成ツールが早期に終了することがあります。このような場合、MDF ファイルは 未確定 状態のままになる可能性があり、ASAM MDF 規格の特定の形式ルールに違反したり、読み取り操作中にデータが失われたりする可能性があります。
一般に、データ グループはソートすることも、ソートしないこともできます。一部の記録ツールでは、記録の完了後にソートせずに、ソートされていない MDF ファイルを書き込みます。ソートされたデータ グループには複数のチャネル グループを含めることはできませんが、ソートされていないデータ グループには複数のチャネル グループを含めることができます。MDF ファイル内のすべてのデータ グループがソートされている場合、MDF ファイルは ソート済み になります。少なくとも 1 つのデータ グループがソートされていない場合、MDF ファイル全体が ソートされていない になります。
ファイナライズされていない MDF ファイルは、ソート済みまたは未ソートのいずれかになります。逆に、ソートされていない MDF ファイルは、ファイナライズ済みまたは未ファイナライズのいずれかになります。
MATLAB で未ファイナライズ MDF ファイルを使用する
ファイナライズされていないファイルには形式の問題があり、操作の信頼性が低下する可能性があるため、mdfInfo 関数を使用してファイナライズされていない MDF ファイルのメタデータにアクセスしようとするとエラーがスローされます。
try info = mdfInfo("MDFUnfinalized.MF4") catch ME disp(ME.message) end
Cannot perform operation on unfinalized file. Use mdfFinalize to create a finalized file.
関数 mdfFinalize を使用して、未確定の MDF ファイルを確定することができます。MDF ファイルがファイナライズされておらず、ソートもされていない場合、mdfFinalize はファイナライズ プロセスの一環としてファイルのソートも試みます。
MATLAB でファイナライズされているがソートされていない MDF ファイルを使用する
MDF ファイルがファイナライズされているがソートされていない場合は、mdfInfo 関数を使用してファイルのメタデータにアクセスできますが、mdfRead 関数を使用してソートされていないファイルからデータを読み取ろうとするとエラーが発生する可能性があります。
関数 mdfSort を使用して、完成したがソートされていない MDF ファイルをソートできます。ソートされていない MDF ファイルもファイナライズされていない場合、そのファイルで mdfSort を使用するとエラーが発生します。代わりに、mdfFinalize を使用して、同時にファイルのファイナライズとソートを行います。
この例では、ファイナライズされていない MDF ファイルでの mdfFinalize の使用法を引き続き示します。ただし、同様のワークフローに従って、最終処理済みだがソートされていない MDF ファイルで mdfSort 関数を使用することができます。
MDF ファイルをその場でファイナライズする
mdfFinalize 関数を使用すると、ソース ファイルをファイナライズされたコピーで上書きすることで、ファイナライズされていない MDF ファイルをその場でファイナライズできます。
デモンストレーションの目的で、copyfile を使用して元のファイルのコピーを作成し、後続のファイナライズ操作で追加のコピー MDFFinalizedInPlace.MF4 を使用します。
copyfile("MDFUnfinalized.MF4", "MDFFinalizedInPlace.MF4")
ソース ファイル名 MDFFinalizedInPlace.MF4 のみを指定して mdfFinalize を使用し、自分自身を上書きする最終的なコピーを作成します。この関数は、完成したファイルの完全なパスを返します。
finalizedPath1 = mdfFinalize("MDFFinalizedInPlace.MF4")finalizedPath1 = "/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex16754708/MDFFinalizedInPlace.MF4"
MDFFinalizedInPlace.MF4 は完成しており、mdfInfo 関数を使用してアクセスできるようになりました。mdfFinalize によって返される完全なパスを指定できます。あるいは、MATLAB ® パス上にある場合はファイル名を指定します。
info1 = mdfInfo(finalizedPath1)
info1 =
MDFInfo with properties:
File Details
Name: "MDFFinalizedInPlace.MF4"
Path: "/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex16754708/MDFFinalizedInPlace.MF4"
Author: ""
Department: ""
Project: ""
Subject: ""
Comment: ""
Version: "4.11"
InitialTimestamp: 2021-04-12 10:06:43.000000000
Creator Details
ProgramIdentifier: "CE "
CreatorVendorName: ""
CreatorToolName: "CE"
CreatorToolVersion: "01.04.01"
CreatorUserName: ""
CreatorComment: "Creation and logging of data."
File Contents
Attachment: [0×7 table]
ChannelGroupCount: 8
Event: [0×8 eventtable]
mdfChannelGroupInfo 関数を使用して、完成したファイル内のすべてのチャネル グループに関する情報を取得します。各チャネル グループの Sorted 値を検査します。すべてのチャネル グループがソートされていることに注意してください。
chanGrpInfo1 = mdfChannelGroupInfo(finalizedPath1)
chanGrpInfo1=8×13 table
GroupNumber AcquisitionName Comment NumSamples DataSize Sorted SourceName SourcePath SourceComment SourceType SourceBusType SourceBusChannelNumber SourceSimulated
___________ _____________________ ___________ __________ ________ ______ __________ __________ _____________ __________ _____________ ______________________ _______________
1 LIN_TransmissionError <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
2 LIN_SyncError <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
3 LIN_TransmissionError <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
4 LIN_Frame <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
5 LIN_ChecksumError <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
6 CAN_RemoteFrame <undefined> 0 0 true CAN CAN CAN Bus CAN 0 false
7 CAN_ErrorFrame <undefined> 0 0 true CAN CAN CAN Bus CAN 0 false
8 CAN_DataFrame <undefined> 118037 2596814 true CAN CAN CAN Bus CAN 0 false
MDF ファイルが完成してソートされると、mdfRead 関数を使用してデータを抽出するなど、すべての MDF 機能を使用できるようになります。
MDF ファイルを別の場所でファイナライズする
mdfFinalize 関数を使用すると、別の最終コピーを作成して、最終処理されていない MDF ファイルをアウトオブプレースで最終処理することもできます。ソースファイル名と送信先ファイル名の両方を指定して関数を呼び出します。
finalizedPath2 = mdfFinalize("MDFUnfinalized.MF4", "MDFFinalizedOutOfPlace.MF4")
finalizedPath2 = "/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex16754708/MDFFinalizedOutOfPlace.MF4"
MDFFinalizedOutOfPlace.MF4 は新しく作成された最終的なコピーであり、mdfInfo 関数を使用してアクセスできます。
info2 = mdfInfo(finalizedPath2)
info2 =
MDFInfo with properties:
File Details
Name: "MDFFinalizedOutOfPlace.MF4"
Path: "/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex16754708/MDFFinalizedOutOfPlace.MF4"
Author: ""
Department: ""
Project: ""
Subject: ""
Comment: ""
Version: "4.11"
InitialTimestamp: 2021-04-12 10:06:43.000000000
Creator Details
ProgramIdentifier: "CE "
CreatorVendorName: ""
CreatorToolName: "CE"
CreatorToolVersion: "01.04.01"
CreatorUserName: ""
CreatorComment: "Creation and logging of data."
File Contents
Attachment: [0×7 table]
ChannelGroupCount: 8
Event: [0×8 eventtable]
mdfChannelGroupInfo 関数を使用して、最終ファイル内のすべてのチャネル グループに関する情報を取得します。各チャネル グループの Sorted 値を検査します。すべてのチャネル グループがソートされていることに注意してください。
chanGrpInfo2 = mdfChannelGroupInfo(finalizedPath2)
chanGrpInfo2=8×13 table
GroupNumber AcquisitionName Comment NumSamples DataSize Sorted SourceName SourcePath SourceComment SourceType SourceBusType SourceBusChannelNumber SourceSimulated
___________ _____________________ ___________ __________ ________ ______ __________ __________ _____________ __________ _____________ ______________________ _______________
1 LIN_TransmissionError <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
2 LIN_SyncError <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
3 LIN_TransmissionError <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
4 LIN_Frame <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
5 LIN_ChecksumError <undefined> 0 0 true LIN LIN LIN Bus LIN 0 false
6 CAN_RemoteFrame <undefined> 0 0 true CAN CAN CAN Bus CAN 0 false
7 CAN_ErrorFrame <undefined> 0 0 true CAN CAN CAN Bus CAN 0 false
8 CAN_DataFrame <undefined> 118037 2596814 true CAN CAN CAN Bus CAN 0 false
MDF ファイルが完成してソートされると、mdfRead 関数を使用してデータを抽出するなど、すべての MDF 機能を使用できるようになります。
作成されたMDFファイルを削除する
この例で作成された MDF ファイルを削除して、作業ディレクトリをクリーンアップします。
delete MDFFinalizedInPlace.MF4 MDFFinalizedOutOfPlace.MF4
まとめ
mdfFinalize と同様に、mdfSort 関数はインプレースとアウトオブプレースの両方のソート操作をサポートします。同じワークフローを適用して、並べ替えられていない MDF ファイルを並べ替えることもできます。
要約すると: