【问题标题】:how to make a Hovmuller plot in Matlab?如何在 Matlab 中制作 Hovmuller 图?
【发布时间】:2016-09-14 21:07:05
【问题描述】:

我有 12 个矩阵,其中包含从 0 到 99 的数字。每个矩阵是 1446x1124 双倍,对应一个月。我也有纬度和经度矩阵,每个也是 1446x1124。我想知道如何制作 Hovmuller 图(经度与时间图或纬度与时间图),它表示 0 到 99 之间给定数字在 12 个矩阵上的出现。

【问题讨论】:

标签: matlab plot latitude-longitude


【解决方案1】:

这是使用contourf 的示例。诀窍在于适当地对 3D 数组进行采样:

x=linspace(0,pi,20);
y=linspace(0,pi,10);
t=0:10:120;
[X3d,Y3d,T3d]=meshgrid(x,y,t);
[X2d,T2dx]=meshgrid(x,t);
[Y2d,T2dy]=meshgrid(y,t);

dat3d=7*sin(X3d)+5*cos(Y3d)+T3d/max(T3d(:))+rand(size(X3d));
dat2dx=7*sin(X2d)+5*cos(y(5))+T2dx/max(T2dx(:))+rand(size(X2d)); % at y(5)
dat2dy=7*sin(x(12))+5*cos(Y2d)+T2dy/max(T2dy(:))+rand(size(Y2d));  % at x(12)
%%
figure(1);clf
contourf(X2d,T2dx,dat2dx);
shading flat; colorbar
ylabel('Time (days)')
xlabel('X distance (km)')
%%
figure(2);clf
contourf(Y2d,T2dy,dat2dy);
shading flat; colorbar
ylabel('Time (days)')
xlabel('Y distance (km)')
%%
figure(3);clf
subplot(221)
contourf(squeeze(X3d(5,:,:)),squeeze(T3d(5,:,:)),squeeze(dat3d(5,:,:)));
shading flat; colorbar
ylabel('Time (days)'); xlabel('X distance (km)')
title('Hovmoller at y(5)')
subplot(222)
contourf(squeeze(Y3d(:,12,:)),squeeze(T3d(:,12,:)),squeeze(dat3d(:,12,:)));
shading flat; colorbar
ylabel('Time (days)'); xlabel('Y distance (km)')
title('Hovmoller at x(12)')
subplot(223)
contourf(squeeze(X3d(8,:,:)),squeeze(T3d(8,:,:)),squeeze(dat3d(8,:,:)));
shading flat; colorbar
ylabel('Time (days)'); xlabel('X distance (km)')
title('Hovmoller at y(8)')
subplot(224)
contourf(squeeze(Y3d(:,17,:)),squeeze(T3d(:,17,:)),squeeze(dat3d(:,17,:)));
shading flat; colorbar
ylabel('Time (days)'); xlabel('Y distance (km)')
title('Hovmoller at x(17)')

【讨论】:

    【解决方案2】:

    假设您有一个 12x100 矩阵 M,每个字段中都有出现次数,绘制它们非常简单。

    M = rand(12,100);
    plot(M) % Plots 100 lines
    plot(M') % Plots 12 lines
    plot(sum(M)) % Plots the sum of 100 lines
    plot(sum(M')) % Plots the sum of 12 lines
    contour(M) % Gives the contour plot
    surf(M) % Gives the surface plot
    

    如果你不知道如何创建 M,我只会提示使用 2 个 for 循环不会太难。

    【讨论】:

    • 您的答案与问题的关系如何?
    • @Shai 鉴于评论我试图帮助提问者绘制他的数据。我认为 hovmuller 不是硬性要求。
    • @DennisJaheruddin 感谢您的回答。事实上,当您尝试使用轮廓功能时,这非常容易。我正在尝试创建矩阵。这就是工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多