本文へ移動
cccskills
無料GitHub で公開

matlab-import-export-vehicle-data

Use when importing or exporting vehicle data from/to log files (MDF/MF4/DAT, BLF, ASC/TXT), decoding CAN/CAN FD/LIN messages to signals via DBC, ARXML, or LDF databases, writing timetable data to MDF or BLF files, or calling blfread, blfinfo, blfwrite, mdfRead, mdfWrite, mdfCreate, mdfInfo, canSignalImport, canMessageImport, canMessageTimetable, canFDMessageTimetable, canSignalTimetable, or linMessageTimetable.

インストール方法を見る

含まれるファイル(13)

  • SKILL.md11.4 KB
  • manifest.yaml661 B
  • references/asc-import.md3.4 KB
  • references/blf-import.md3.6 KB
  • references/blf-writing.md7.5 KB
  • references/can-decode.md2.0 KB
  • references/canfd-decode.md1.9 KB
  • references/database-objects.md2.4 KB
  • references/dbc-multiplexing-syntax.md4.9 KB
  • references/lin-decode.md2.0 KB
  • references/mdf-import.md4.4 KB
  • references/mdf-writing.md7.3 KB
  • references/simple-demultiplexing.md4.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Import, Export, and Decode Vehicle Data

Import, decode, and export vehicle network log files in MATLAB using Vehicle Network Toolbox (VNT).

When to Use

  • Reading .mf4/.mdf/.dat, .blf, .asc, or .txt vehicle bus log files
  • Decoding raw CAN/CAN FD frames to signals via DBC or ARXML databases
  • Demultiplex signals from raw CAN/CAN FD frames via DBC databases in the case of simple multiplexing (R2026a or earlier)
  • Decoding LIN frames via LDF databases (R2025a+)
  • Handling polymorphic return types from VNT read functions
  • Writing MATLAB timetable data to MDF/MF4 files with mdfWrite
  • Writing CAN/CAN FD message data to BLF files with blfwrite
  • Converting unsupported timetable types (logical, categorical, cell, datetime columns) for MDF export

When Not To Use

  • Simulink CAN configuration
  • Live CAN channel access
  • XCP/A2L workflows
  • Demultiplexing of signals in the case of hierarchical or extended multiplexing
  • Demultiplexing of signals via ARXML or LIN databases
  • Writing LIN data to BLF (unsupported by VNT's blfwrite -- use MDF instead)
  • Writing to ASC or TXT files (no canMessageExport exists -- use BLF or MDF instead)

Prerequisites

Before running any operations, determine the MATLAB version:

r = matlabRelease;
tok = regexp(r.Release, 'R(\d{4})([ab])', 'tokens');
matlabYear = str2double(tok{1}{1});
matlabLetter = tok{1}{2};

Before calling BLF/ASC/TXT import or CAN/CAN FD/LIN decode functions, call detect_matlab_toolboxes to confirm Vehicle Network Toolbox is installed. If unavailable, tell the user. Once confirmed in a session, do not re-check.

MDF functions (mdfRead, mdfChannelGroupInfo, mdfInfo, mdfChannelInfo) are base MATLAB (R2023a+) and do not require VNT. Do not use the deprecated mdf() object constructor -- always use the functional API. For reading all groups blindly, mdfRead alone is acceptable. To selectively read or inspect structure first, use mdfChannelGroupInfo or mdfInfo.

For R2026a and earlier, multiplexing is not natively supported in Vehicle Network Toolbox. Apply the demultiplexing modifications described below to decoded signals.

Decode Pipeline

Source FormatCANCAN FDLINRaw (no decode)
ASCcanSignalImport(f,"Vector",db)same--canMessageImport(f,"Vector",OutputFormat="timetable")
TXTcanSignalImport(f,"Kvaser",db)same--canMessageImport(f,"Kvaser",OutputFormat="timetable")
BLFblfread(f,Database=db) -> canSignalTimetableblfread(f,Database=db) -> canFDMessageTimetable -> canSignalTimetableblfread(f,Database=linDb,ProtocolMode="LIN") -> linMessageTimetableblfread(f)
MDF/MF4/DATmdfRead -> canMessageTimetable(tt,db) -> canSignalTimetablemdfRead -> canFDMessageTimetable(tt,db) -> canSignalTimetablemdfRead -> linMessageTimetable(tt,linDb)mdfRead -> timetable directly

Database Loading

db = canDatabase("path/to/file.dbc");       % CAN and CAN FD
db = arxmlDatabase("path/to/file.arxml");   % CAN only (not CAN FD)
linDb = linDatabase("path/to/file.ldf");    % LIN (R2025a+)

Load once, pass to all decode calls. Multiple databases: canMessageTimetable(tt, [db1, db2]).

Database inspection for DBC files and classification of the multiplexing scheme

In case of DBC files only, determine whether the file contains definitions of multiplexed signals that use extended or hierarchical multiplexing. For MATLAB R2026a or earlier, it is not possible to determine the multiplexing scheme from the canDatabase object directly. Therefore, inspect the raw DBC text to classify the multiplexing scheme, by reading the DBC file as text using fileread():

dbcText = fileread("path/to/file.dbc");

Check for extended multiplexing indicators. See references/dbc-multiplexing-syntax.md for the full syntax guide — consult it when parsing unfamiliar DBC signal markers or SG_MUL_VAL_ entries.

hasSgMulValEntries = ~isempty(regexp(dbcText, '^SG_MUL_VAL_\s+\d+', 'once', 'lineanchors'));
hasNestedMuxor = ~isempty(regexp(dbcText, 'SG_\s+\w+\s+m\d+M\s', 'once'));
hasExtendedMux = hasSgMulValEntries || hasNestedMuxor;

Note: SG_MUL_VAL_ may appear in the NS_ (namespace) section as a keyword declaration — this does NOT indicate extended multiplexing. Only match actual data entries that start at the beginning of a line followed by a numeric message ID. If hasExtendedMux is true, identify which specific messages are affected by parsing the message IDs from SG_MUL_VAL_ entries:

sgMulValMsgIds = regexp(dbcText, '^SG_MUL_VAL_\s+(\d+)', 'tokens', 'lineanchors');
extendedMuxMsgIds = unique(cellfun(@(x) str2double(x{1}), sgMulValMsgIds));

For R2026a and earlier, filter out messages with extended multiplexing (identified in extendedMuxMsgIds) and inform the user.

Key Constraints

  • Polymorphic returns: All VNT read functions (canSignalImport, blfread, mdfRead, canMessageImport) return different types based on channel count and parameters. Always guard with iscell()/istimetable()/isstruct(). When checking multi-channel results, use iscell() as the primary guard to branch between cell array (multi-channel) vs direct timetable (single channel), then iterate or extract with {n} or {i}.
  • ARXML + CAN FD: arxmlDatabase does not support CAN FD in MATLAB. It cannot be used with canFDMessageTimetable. When the user provides an ARXML file for CAN FD data, always explain that ARXML does not support CAN FD and they must use canDatabase with a DBC file instead. Do not silently switch to DBC without explaining why.
  • ARXML for CAN (non-FD): When the user provides an ARXML file for standard CAN decode, use arxmlDatabase exclusively. Do not also load canDatabase as a fallback -- the ARXML database object works identically in canMessageTimetable and canSignalTimetable. Only use canDatabase when the user provides a DBC file.
  • No canFDSignalTimetable: This function does not exist. Use canSignalTimetable for both CAN and CAN FD signals.
  • BLF LIN requires ProtocolMode="LIN": Without it, blfread returns only CAN data.
  • No signal-level LIN decode: Only linMessageTimetable exists. Access signal values from timetable columns directly.
  • MDF raw CAN detection: Use channel name prefixes CAN_DataFrame / LIN_Frame (ASAM standard). NEVER use SourceBusType or AcquisitionSourceType metadata -- not even as a fallback. These fields are vendor-specific and unreliable.
  • canMessageImport default format: Returns legacy can.Message array. Always pass OutputFormat="timetable".
  • Cell extraction: Multi-channel calls to blfread, mdfRead, and canMessageImport return cell arrays. Extract with {n} before processing.
  • Use canSignalImport for ASC/TXT signals: It decodes in one call. Only use canMessageImport when raw message timetables are needed.

File-Specific References

  • ASC import -- canSignalImport/canMessageImport with Vector and Kvaser vendors, polymorphic return type handling for multi-channel files
  • BLF import -- blfinfo for file inspection, blfread with and without ChannelID, CAN vs LIN protocol selection
  • MDF import -- mdfRead/mdfChannelGroupInfo/mdfChannelInfo, detecting raw CAN/LIN groups by channel name, reading specific groups

Protocol References

  • CAN decode -- canMessageTimetable and canSignalTimetable pipelines, DBC and ARXML database usage
  • CAN FD decode -- canFDMessageTimetable pipeline, why ARXML does not work for CAN FD
  • LIN decode -- linMessageTimetable usage, accessing signal values from timetable columns (no signal-level function exists)
  • Database objects -- canDatabase vs arxmlDatabase vs linDatabase, which decode functions accept which database type

Demultiplexing References

  • Simple demultiplexing -- canDatabase, canMessageTimetable, canFDMessageTimetable, canSignalTimetable pipelines and signal demultiplexing

Export Workflows

MDF Writing

Writing MATLAB timetable data to MDF/MF4 files with mdfWrite.

TaskFunctionNotes
Write timetable to new filemdfWrite(file, tt)Appends channel group; file created with warning if missing
Overwrite existing groupmdfWrite(file, tt, GroupNumber=N)Must read with IncludeMetadata=true first
Set file metadatamdfCreate(file, FileInfo=minfo) then mdfWrite()Supported: Author, Department, Project, Subject, Comment
Convert unsupported typesSee references/mdf-writing.mdlogical -> uint8(), categorical -> double() (stores category index), cell -> string(), datetime col -> posixtime()
Write raw CAN framesUse CAN_DataFrame.ID/DLC/DataLength/DataBytes column naming (ASAM standard)All 4 columns mandatory (ID, DLC, DataLength, DataBytes). Omitting any one breaks canMessageTimetable re-import.
Write raw LIN framesUse LIN_Frame.ID/ReceivedDataByteCount/DataLength/DataBytes column namingASAM standard LIN frame naming
Handle datetime RowTimesRequired step: Set .TimeZone = 'UTC' before writing: tt.Properties.RowTimes.TimeZone = 'UTC';Alternatively convert to duration -- both work. Omitting this causes mdfWrite to error or produce unreadable timestamps.

BLF Writing

Writing CAN and CAN FD message data to BLF files with blfwrite.

TaskFunctionNotes
Write CAN messagesblfwrite(file, tt, chanID, 'CAN')Use canMessageTimetable to format tt; do not manually build columns
Write CAN FD messagesblfwrite(file, tt, chanID, 'CAN FD')Use canFDMessageTimetable to format tt; up to 64-byte payloads. See references/blf-writing.md for the 13 required columns when building from scratch.
CAN/CAN FD mixedBoth supported in one BLF fileUse explicit protocol string per call

LIN is not supported by VNT's blfwrite. Use MDF for LIN logging. When the user asks to write LIN data to BLF, state this limitation immediately -- do not attempt workarounds or partial solutions before explaining the constraint.

ASC/TXT writing is not supported. There is no canMessageExport counterpart to canMessageImport. Use BLF or MDF for export.

Export References

  • MDF writing -- mdfWrite/mdfCreate, type conversion, ASAM CAN/LIN naming, overwriting groups, metadata preservation
  • BLF writing -- blfwrite with CAN/CAN FD, canMessageTimetable/canFDMessageTimetable formatting, channel callbacks

Copyright 2026 The MathWorks, Inc.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Guide for accessing financial and economic data in MATLAB using the Datafeed Toolbox. Covers Bloomberg (market data via bloomberg/blp/bloombergHypermedia), FRED (Federal Reserve economic data via fredrs), Haver Analytics (economic data via haver/haverdirect/haverview), and LSEG Datastream (historical data via datastreamws). Use when connecting to any of these data providers from MATLAB.

日本語の概要は準備中です。原文の説明を表示しています。

matlab/matlab-agentic-toolkit1,1492026年10月9日 更新

Read BEFORE writing any code that adds Additive White Gaussian Noise (AWGN) to signals and converts between SNR, Eb/No, Es/No, and per-subcarrier SNR for communications simulations, using awgn(), convertSNR(), berawgn(). The default MATLAB patterns for AWGN (e.g., 'measured' option, manual SNR formulas) produce subtly incorrect results. This skill specifies the correct calling conventions, required function usage, and critical anti-patterns that must be avoided.

日本語の概要は準備中です。原文の説明を表示しています。

matlab/matlab-agentic-toolkit1,1492026年10月9日 更新

Analyze AMS waveform data using Mixed-Signal Blockset utilities: phase noise measurement, clock jitter, anti-aliased resampling, timing measurements, lock time, INL/DNL, ADC/DAC calibration, HSpice import. Use when analyzing time-domain voltage from PLL/VCO/clock simulations, measuring phase noise from variable-step solver output, computing jitter, or resampling non-uniform data.

日本語の概要は準備中です。原文の説明を表示しています。

matlab/matlab-agentic-toolkit1,1492026年10月9日 更新

Design and analyze electrically large antenna structures using MATLAB Antenna Toolbox. Covers reflector antennas (parabolic, Cassegrain, Gregorian, offset, corner, cylindrical, spherical, custom STL), reflectarrays and reconfigurable intelligent surfaces (RIS), antennas installed on platforms (vehicles, aircraft, ships, satellites), and radar cross section (RCS) analysis. Includes solver selection (MoM-PO, PO, MoM, FMM), mesh control, and GPU acceleration. Use when the user wants to design a dish/reflector antenna, reflectarray, analyze an antenna on a platform, or compute RCS.

日本語の概要は準備中です。原文の説明を表示しています。

matlab/matlab-agentic-toolkit1,1492026年10月9日 更新

Analyze data using MATLAB. Use when the task involves tables, timetables, time-series data, numeric arrays, sensor matrices, or gridded data — including but not limited to exploring, row filtering, sorting, cleaning, transforming, aggregating, smoothing, padding, trimming, and answering questions about data. MATLAB provides extensive, easy-to-use built-in functions for these workflows with no additional products required.

日本語の概要は準備中です。原文の説明を表示しています。

matlab/matlab-agentic-toolkit1,1492026年10月9日 更新

S-parameters, insertion loss, fields, currents, mesh control, and solver selection for RF PCB performance validation. TRIGGER: user asks to compute S-parameters, analyze insertion/return loss, extract fields or currents, compare MoM vs FEM, or control mesh for any RF PCB component. Invoke BEFORE writing sparameters() or solver code — API is non-obvious. SKIP: designing or creating components (use the specific matlab-design-pcb-* skill), material/stackup setup only (use matlab-manage-pcb-material), optimization sweeps (use matlab-optimize-pcb-design), PDN/IR-drop analysis (use matlab-analyze-pcb-pdn).

日本語の概要は準備中です。原文の説明を表示しています。

matlab/matlab-agentic-toolkit1,1492026年10月9日 更新

matlab のスキルをすべて見る

このスキルの問題を報告する