Matlab:如何从单个向量中的数据制作二维 plot/animation?
Matlab: how to make a 2D plot/animation from data in a single vector?
我有一个文本文件,其中包含二维 (2D) 流计算的计算结果。我想在 Matlab 中绘制结果。几年前我经常做这种事情,但忘记了如何做,非常感谢任何建议。
下面是结果文件的片段。 左边的列是时间步长(我仅以时间步长 45 和 46 的数据为例;文件太长,无法 post 所有数据)。右边的栏对我来说是最难的部分。 右侧的列对应于所有 x–y 点(因此是二维数据的单列)。我知道 x 值的数量和 y 值的数量。
我的问题是我不知道如何为 (i) 二维绘图 (ii) 单个时间步划分右侧列。
45.0000 1.0000
45.0000 0.9742
45.0000 0.9542
45.0000 0.9521
45.0000 0.9480
45.0000 0.9436
45.0000 0.9388
45.0000 0.9326
46.0000 1.0000
46.0000 0.9742
46.0000 0.9542
46.0000 0.9521
46.0000 0.9480
46.0000 0.9436
46.0000 0.9388
46.0000 0.9326
...
我首先想绘制 x 和 y 数据的二维图。然后我想为它们制作动画(即,每个时间步长的情节;我可能可以弄清楚那部分)。最重要的部分是二维图。如果有人愿意给我指出一个示例,说明如何使用数据向量的正确索引创建 2D 图,我将不胜感激。
我不是很确定,如果我理解你的问题所以我做了一些假设。
据我了解,第一列给出了时间步长,第二列给出了测量的流量数据。我 假设 在同一时间步测量的流量数据是在不同位置测量的,并且您想为每个时间步绘制流量曲线。
这可以使用以下代码完成,即每个时间步长一个单独的图:
%% separate plot for each timestep
fid = fopen('test.txt');
while ~feof(fid)
C = textscan(fid,'%f %f',8);
figure();
timestep = C{1};
plot(C{2});
title(num2str(timestep(1)));
end
可以使用以下代码生成一张图中包含所有流量剖面的动画:
%% animation
fid = fopen('test.txt');
figure(); hold on;
while ~feof(fid)
C = textscan(fid,'%f %f',8);
timestep = C{1};
plot(C{2}, 'DisplayName', num2str(timestep(1)));
pause(1);
end
hold off;
legend show;
我有一个文本文件,其中包含二维 (2D) 流计算的计算结果。我想在 Matlab 中绘制结果。几年前我经常做这种事情,但忘记了如何做,非常感谢任何建议。
下面是结果文件的片段。 左边的列是时间步长(我仅以时间步长 45 和 46 的数据为例;文件太长,无法 post 所有数据)。右边的栏对我来说是最难的部分。 右侧的列对应于所有 x–y 点(因此是二维数据的单列)。我知道 x 值的数量和 y 值的数量。
我的问题是我不知道如何为 (i) 二维绘图 (ii) 单个时间步划分右侧列。
45.0000 1.0000
45.0000 0.9742
45.0000 0.9542
45.0000 0.9521
45.0000 0.9480
45.0000 0.9436
45.0000 0.9388
45.0000 0.9326
46.0000 1.0000
46.0000 0.9742
46.0000 0.9542
46.0000 0.9521
46.0000 0.9480
46.0000 0.9436
46.0000 0.9388
46.0000 0.9326
...
我首先想绘制 x 和 y 数据的二维图。然后我想为它们制作动画(即,每个时间步长的情节;我可能可以弄清楚那部分)。最重要的部分是二维图。如果有人愿意给我指出一个示例,说明如何使用数据向量的正确索引创建 2D 图,我将不胜感激。
我不是很确定,如果我理解你的问题所以我做了一些假设。
据我了解,第一列给出了时间步长,第二列给出了测量的流量数据。我 假设 在同一时间步测量的流量数据是在不同位置测量的,并且您想为每个时间步绘制流量曲线。
这可以使用以下代码完成,即每个时间步长一个单独的图:
%% separate plot for each timestep
fid = fopen('test.txt');
while ~feof(fid)
C = textscan(fid,'%f %f',8);
figure();
timestep = C{1};
plot(C{2});
title(num2str(timestep(1)));
end
可以使用以下代码生成一张图中包含所有流量剖面的动画:
%% animation
fid = fopen('test.txt');
figure(); hold on;
while ~feof(fid)
C = textscan(fid,'%f %f',8);
timestep = C{1};
plot(C{2}, 'DisplayName', num2str(timestep(1)));
pause(1);
end
hold off;
legend show;