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