Plot 以倍频程从.dat文件打印

Plot 以倍频程从.dat文件打印,plot,octave,Plot,Octave,我正在运行一个Fortran代码,它将多组数据输出到一个.dat文件。我想用倍频程绘制两列数据。例如,我要绘制的数据如下表所示: 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

我正在运行一个Fortran代码,它将多组数据输出到一个.dat文件。我想用倍频程绘制两列数据。例如,我要绘制的数据如下表所示:

      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轴上。提前感谢您的帮助

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

[t,eta] = textread ("yourfile.dat", "%f %f", 100, "headerlines", 147)
这将返回两列向量“t”和“eta”,以及您的数据。在此之后,您可以使用

plot (t, eta)

您的.dat在线可用吗?您可以上传吗?

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

[t,eta] = textread ("yourfile.dat", "%f %f", 100, "headerlines", 147)
这将返回两列向量“t”和“eta”,以及您的数据。在此之后,您可以使用

plot (t, eta)

您的.dat在线可用吗?您可以上传吗?

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

[t,eta] = textread ("yourfile.dat", "%f %f", 100, "headerlines", 147)
这将返回两列向量“t”和“eta”,以及您的数据。在此之后,您可以使用

plot (t, eta)

您的.dat在线可用吗?您可以上传吗?

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

[t,eta] = textread ("yourfile.dat", "%f %f", 100, "headerlines", 147)
这将返回两列向量“t”和“eta”,以及您的数据。在此之后,您可以使用

plot (t, eta)
你可以在线使用.dat吗?或者你可以上传它吗?

除了
textdread
(参见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_)
textdread
(见安迪的答案)的另一个替代方法是
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_)
textdread
(见安迪的答案)的另一个替代方法是
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_)
textdread
(见安迪的答案)的另一个替代方法是
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_)

只是查阅文本阅读,不太明白。。这个命令会读到有两列,并且我需要的值被分为这两列吗?只是查找textread,不太明白。。这个命令会读到有两列,并且我需要的值被分为这两列吗?只是查找textread,不太明白。。这个命令会读到有两列,并且我需要的值被分为这两列吗?只是查找textread,不太明白。。这个命令会读到有两列,并且我需要的值被分成这两列吗?谢谢,我认为这对我来说更有意义。实际上,我已经成功地将其作为矩阵再次输出,因此数据从.dat文件的第一行开始,我想将第1列与第2列(最后将第1列与第3-6列)进行对比。我猜我可以使用相同的格式,但不需要跳过的行和列。我理解对了吗?我现在正在阅读更多关于dlmread的内容,希望它能更清晰一点。@user3306583是的,就是这样。谢谢你,我认为这对我来说更有意义。实际上,我已经成功地将其作为矩阵再次输出,因此数据从.dat文件的第一行开始,我想将第1列与第2列(最后将第1列与第3-6列)进行对比。我猜我可以使用相同的格式,但不需要跳过的行和列。我理解对了吗?我现在正在阅读更多关于dlmread的内容,希望它能更清晰一点。@user3306583是的,就是这样。谢谢你,我认为这对我来说更有意义。实际上,我已经成功地将其作为矩阵再次输出,因此数据从.dat文件的第一行开始,我想将第1列与第2列(最后将第1列与第3-6列)进行对比。我猜我可以使用相同的格式,但不需要跳过的行和列。我理解对了吗?我现在正在阅读更多关于dlmread的内容,希望它能更清晰一点。@user3306583是的,就是这样。谢谢你,我认为这对我来说更有意义。实际上,我已经成功地将其作为矩阵再次输出,因此数据从.dat文件的第一行开始,我想将第1列与第2列(最后将第1列与第3-6列)进行对比。我猜我可以使用相同的格式,但不需要跳过的行和列。我理解对了吗?我现在正在阅读更多关于dlmread的内容,希望它能更清楚一点。@user3306583是的,就是这样。