在Octave中从.dat文件绘图

时间:2014-10-02 11:30:30

标签: plot octave

我正在运行一个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轴上。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

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

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

绘制它们
plot (t, eta)

你.dat在线是否可用,或者你可以上传吗?

答案 1 :(得分:1)

textread的{​​{3}}替代品(请参阅Andy的回答)是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_)