首页 文章

Matlab:如何从单个向量中的数据制作2D绘图/动画?

提问于
浏览
0

我有一个文本文件,其中包含二维(2D)流量计算的计算结果 . 我想在Matlab中绘制结果 . 我几年前就做过这种事情,但忘记了如何以及非常感谢任何建议 .

下面是结果文件的片段 . left-hand column is the time step (我只显示来自时间步骤45和46的数据作为示例;文件太长而无法发布所有数据) . 右栏对我来说很难 . right-hand column corresponds to all x–y points (所以只有一列2D数据) . 我知道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图 . 然后我想给它们制作动画(即每个时间步的情节;我可能会想出那个部分) . 最重要的部分是二维图 . 如果有人愿意给我一个如何用数据向量创建正确索引的2D绘图的例子,我将非常感激 .

1 回答

  • 0

    我不是很确定,如果我理解你的问题,那么我就做了一些假设 .

    据我所知,第一列给出了时间步长,第二列给出了测量流量数据 . 我假设在不同位置测量在相同时间步长测量的流量数据,并且您想要绘制每个时间步长的流量曲线 .

    这可以使用以下代码完成,即每个时间步长的一个单独的图:

    %% 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;
    

相关问题