1

0から99までの数値を含む12個の行列があります。各行列は1446x1124doubleで、月に対応します。緯度と経度のマトリックスもあり、それぞれが1446x1124です。12個の行列で0から99までの特定の数値の出現を表すHovmullerプロット(経度と時間のプロットまたは緯度と時間のプロット)を作成する方法を知りたいです。

4

2 に答える 2

0

次に、 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)')
于 2016-09-14T13:07:05.497 に答える
-1

各フィールドに発生回数を含む 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 ループを使用するのは難しくないというヒントだけを示します。

于 2012-12-27T08:51:42.623 に答える