Plot 从.dat文件在倍频程中打印-解析问题?
我正在运行一个Fortran代码,它将多组数据输出到一个.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.
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的零”
”。