Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plot 从.dat文件在倍频程中打印-解析问题?_Plot_Octave - Fatal编程技术网

Plot 从.dat文件在倍频程中打印-解析问题?

Plot 从.dat文件在倍频程中打印-解析问题?,plot,octave,Plot,Octave,我正在运行一个Fortran代码,它将多组数据输出到一个.dat文件。我想用倍频程绘制数据,数据分为六列。例如,我要绘制的数据如下表所示: 0.00000 -0.74801 -1.28157 -0.83853 -0.48516 1.63291 0.50000 -0.77323 -1.29113 -0.05049 0.41035 1.43455 1.00000 -0.77395 -0.

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

  0.00000     -0.74801     -1.28157     -0.83853     -0.48516      1.63291
  0.50000     -0.77323     -1.29113     -0.05049      0.41035      1.43455
  1.00000     -0.77395     -0.92811      0.53030      0.97057      0.84562
  1.50000     -0.53535     -0.39600      0.77706      1.08468      0.14751
  2.00000     -0.11992      0.09400      0.70391      0.82753     -0.39832
  2.50000      0.13110      0.40199      0.42843      0.39346     -0.65142
  3.00000      0.18444      0.49287      0.09997     -0.01108     -0.62348
  3.50000      0.21139      0.41749     -0.16809     -0.26034     -0.43447
  4.00000      0.06769      0.26052     -0.33161     -0.34466     -0.22600
  4.50000     -0.11022      0.08786     -0.40536     -0.33917     -0.08197
  5.00000     -0.30134     -0.07872     -0.42390     -0.33216      0.00230
我试图将第2列与第1列(这只是数据的一个示例)进行对比,然后最终将其余的列与第1列进行对比。目前,我的八度音阶脚本如下所示:

该脚本从数据文件中读取自由曲面的值,并根据时间绘制值

%Load text file
data = 'filename.dat';
m = dlmread(data);
t = m(:,2);
eta = m(:,3);
plot(t,eta);
title('Free surface eta(t) vs time');
xlabel('Time (s)');
ylabel('Location of free surface');
grid on
然而,我的情节是空白的。如果我滚动.dat文件,它会告诉我第一列中的值在第6-14列,而“第2列”的值实际上在第19-27列。这就是为什么情节是空白的吗?也许它没有将它们视为“第1列”和“第2列”中的数字?有人有这方面的经验吗


提前谢谢

问题出在行m=dlmread(数据,分隔符)

如果像这里显示的那样将分隔符指定为单个空格,则结果是一个11 x 32的矩阵。filename.dat中的某些列之间有5个空格,某些列之间有6个空格,具体取决于负号。它是在所有空格之间插入零。您将获得空白打印,因为您正在打印一列零与一列零

根据octave文档,如果没有提供分隔符,dlmread将定义自己的分隔符。 我的建议是修改八度音阶脚本,如下所示:

m = dlmread(data); % creates an 11 x 6 matrix

我从上面复制并粘贴了你的数据。如果数据文件中第1列之前有空格,则它将创建一个11 x 7的矩阵,其中第1列为全零。如果第一列前面有空格,请确保使用t=m(:,2)和eta=m(:,3)。

谢谢!我现在得到了一个图,但它绝对不是我期望的形状(某种正弦波是它应该是什么样子的…它似乎读错了我的第一列(乍一看,y值看起来是正确的),但x轴只是从-6到6,y轴是从-4到4(y轴应该是随机的,但在我的数据中,我的值大于4)…我不知道这些值是从哪里来的?你有什么建议吗?它应该是一个足够简单的随机波对时间图…现在,当我使用m=dlmread(数据)运行代码时,我有一个很大的扭曲,我以.5的增量获得0-5的t值,并从上面的数据中获得与第2列相等的eta值。您的数据文件是否包含与上面相同的数据?若要设置限制,请使用轴([x_lox_hi y_loy_hi]),例如轴([0,5,-1,1])是的,我有相同的值…我将尝试设置轴。我猜这是dlmread命令的一部分?(我想我读过了,但我现在没有看到它)axis不是dlmread的一部分。axis是在绘图后立即运行的自己的函数。好的,谢谢,我会尝试一下。尽管我想知道我是否可以以某种方式向您展示绘图,因为问题不仅仅在于限制?在询问
绘图(t,eta)之前
问题,最好先检查
t
eta
。这会产生一个更好的问题,如“为什么列中满是带
dlmread的零”
”。