Search code examples
arraysfileoctave

How to Get specific data drom text in Octave


I have a problem loading data from text file in Octave. My text file looks like this:

# Created by Octave 5.2.0, Wed May 05 16:07:02 2021 GMT <unknown@DESKTOP-HEVT6O6>
# name: x
# type: matrix
# rows: 1
# columns: 3600
 4.8899999999999997 4.9000000000000004 4.9000000000000004 4.9100000000000001 4.9299999999999997 4.9249999999999998 ... 

I need to load those float numbers in one matrix and plot them in time domain.

My code so far:

fs = 360;
Ts = 1/fs;

d = fileread('ecg.txt');

data = regexp(d(1,136:62328),' ','split');
data = str2double(data);

ed = length(data);

t = linspace(0,Ts,ed - 1);
figure(1)
plot(t,data(1,2:ed))

So My question is if there is another way to do it or if there is a better way to do it.


Solution

  • Your file is in Octave’s text data format. This is the default file format when saving variables to file with save. That is, that text file was saved in Octave using save ecg.txt x. The Octave command load ecg.txt will load the file, and re-create the x variable just like it was when it was saved.

    Thus, to plot your data, just do

    load ecg.txt
    plot(x)