从.dat文件中的八度绘图

问题描述 投票:0回答:2

我正在运行一个Fortran代码,该代码将几组数据输出到一个.dat文件。我想使用Octave在两列中绘制数据。例如,我要绘制的数据具有以下形式:

      t              Eta(t)
     0.00           -0.748
     0.50           -0.773
     1.00           -0.774
     1.50           -0.535
     2.00           -0.120
     2.50            0.131
     3.00            0.184
     3.50            0.211
     4.00            0.068
     4.50           -0.110

数据从第148行开始(不包括t和eta(t)行,并持续到第247行。t和eta(t)的数据显然跨越几列(根据文本文件,这是我正在从中读取行和列号。是否可以通过指定从哪一行开始或以任何形式绘制数据(如果采用这种形式)?简而言之,我想绘制它,以便t列中的值在x轴上,而eta(t)值在y轴上。预先感谢您的帮助!

plot octave
2个回答
2
投票

faster的很多textread替代品(请参阅安迪的答案)是dlmread

filename = "yourfile.dat";
# empty separator means 'automatic'
separator = '';
skipped_rows = 147;
skipped_columns = 0;
m = dlmread(filename, separator, skipped_rows, skipped_columns);
t = m(:,1);
eta_ = m(:, 2);
plot(t, eta_)

如果要在第248行之后停止读取文件,请使用

filename = "yourfile.dat";
# empty separator means 'automatic'
separator = '';
skipped_rows = 147;
skipped_columns = 0;
last_row = 248
last_column = 2
m = dlmread(filename, separator, 
            [skipped_rows, skipped_columns, last_row-1, last_column-1]);
t = m(:,1);
eta_ = m(:, 2);
plot(t, eta_)

1
投票

使用文本阅读。您想跳过147行(标题行)并阅读247-147 = 100行

[t,eta] = textread ("yourfile.dat", "%f %f", 100, "headerlines", 147)

这将随数据返回2列向量“ t”和“ eta”。之后,您可以使用

绘制它们
plot (t, eta)

您是否可以在线使用.dat还是可以上传?

© www.soinside.com 2019 - 2024. All rights reserved.