How can I read a ".dat" and ".hea" file in to MATLAB?

Currently i am working on project which use Photo Plythismo Graph (ppg). But the data is in .dat and .hea format.
I am looking a code to get a visualize view of these PPG.
If anyone have any idea about this please add a comment on this post. Your help would be greatly appreciate and it really help my project.

5 Comments

you can use the rdmat and rdann functions from the WFDB Toolbox for MATLAB. Here's an example of how you can load the .dat, .hea, and .atr files:
% Add the WFDB Toolbox for MATLAB to your MATLAB path
addpath('path/to/wfdb-matlab');
% Specify the file paths for the .dat, .hea, and .atr files
datFile = 'path/to/ecg_data.dat';
heaFile = 'path/to/ecg_data.hea';
atrFile = 'path/to/ecg_data.atr';
% Load the .dat file
ecgSignal = rdmat(datFile);
% Load the .hea file to get the sampling frequency
heaInfo = readheader(heaFile);
fs = heaInfo.freq;
% Load the .atr file to get the beat annotations
[~, beatAnnotations] = rdann(heaInfo.recordname, 'atr', 1);
% Perform further processing or analysis with the loaded data
% ...
% Example: Plotting the ECG signal
t = (0:length(ecgSignal)-1) / fs;
figure;
plot(t, ecgSignal);
xlabel('Time (s)');
ylabel('Amplitude');
title('ECG Signal');
% Example: Display beat annotations
disp(beatAnnotations);
Make sure to replace 'path/to/wfdb-matlab', 'path/to/ecg_data.dat', 'path/to/ecg_data.hea', and 'path/to/ecg_data.atr' with the appropriate file paths in your system.
The WFDB Toolbox for MATLAB provides functions to read and process PhysioNet data, including the MIT-BIH Arrhythmia Database files (.dat, .hea, .atr). It allows you to load the ECG signal, extract beat annotations, and perform various signal processing and analysis tasks.
You can download the WFDB Toolbox for MATLAB from the PhysioNet website (https://physionet.org/content/wfdb-app-matlab/). Make sure to follow the installation instructions provided to set up the toolbox in MATLAB.
Note: If you encounter any issues loading the dataset using the rdmat and rdann functions, please ensure that the files are in the correct format and that the toolbox is properly installed and configured in MATLAB.
Hey! I tried running this code on the Online MatLab platform and It keeps throwing the following erros:
Error using rdmat Could not open file: /MATLAB Drive/100.dat.hea !
This happends when I define the file path and mention the file extension as .dat
When I do not mention the file extension and only the file name, I get the following error
Error in rdmat (line 144) load([recordName '.mat']);
Any idea what I am doing wrong?
I get the same errors when I do that as well. Monika's solution using mdfimport didn't work for my particular dataset, but it probably works for others.
I finally ended up using the rdsamp.m function in the wfdb toolbox. What's not very clear in the documentation is that rdsamp automatically reads files from some remote server with all of the Physionet data. What is even less clear is how to then figure out what path you should use to access the specific dataset you want. You can find the path in the files section of the physionet dataset you want to use (Ex: https://physionet.org/content/mitdb/1.0.0/). The provided bullet point is
  • Download the files using your terminal: wget -r -N -c -np https://physionet.org/files/mitdb/1.0.0/
Just use whatever is in the 'mitdb' part then the record number. The record number is the filename (101 for 101.hea, 101.atr, etc.)
The code looks like this:
[signal,Fs,tm]=rdsamp('mitdb/101',[],1000);
@Michelle Gee could you maybe also help me with Physionet?
Is there a chance that the wget corrupts the .hea format?
Is there a limit how much data can be downloaded in one go? Should the folders be partitioned? Is there a more secure method of downloading said data?
So does rdsamp ignore the https://physionet.org/files portion? And if files had multiple sub-folders, would a for loop where they are being interchange work or do I need to name them one at a time? and for instance if the code is on dekstop while https://physionet.org/files/ is in another folder, would it still work or do they have to be in the space workspace?
Hi Levan,
I was using this data set (https://physionet.org/content/rvmh1/1.0.0/) and did not notice any issues with corrupted .hea files.
I was able to work with about 5 patient files at a time, but I'm guessing that is mostly a function of the computer you're using. I did not partition the folders and have not looked into more secure methods of downloading the data.
I think rdsamp just has the https://physionet.org/files portion built into the function. You don't need to have the files on your local machine because rdsamp pulls them from the website. Sorry I can' t be of more help, but I didn't try any of the things you're asking about since the dataset I was interested in does not have subfolders.

Sign in to comment.

Answers (2)

Hello,
I am one of the authors of this database and I am glad you chose the BUT PPG database for your research. May I ask you what is your research dealing with?
More information about the database is included in this brand new article: https://www.hindawi.com/journals/bmri/2021/3453007/ .
The data are in standard WFDB format (very common on Physionet). This format (including .dat and .hea) can be read using WFDB toolbox https://archive.physionet.org/physiotools/matlab/wfdb-app-matlab/ .
I hope this helps. If you have any further question, feel free to ask.
Best regards,
Andrea Nemcova
To import dat files I use the mdfimport tool found on the Matab File Exchange

Categories

Asked:

on 4 Jul 2021

Commented:

on 1 Dec 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!