4
\ begingroup美元

我试图创建一个Hovmoller图在MATLAB但是我很新的编程和不知道该做什么。我想做涡度。以下是我目前的代码。任何输入或建议,将不胜感激。

路径(路径“/用户/ zoleak /文件/”);lev_name = ' 700 '; % mb disp (strcat (lev_name“计算意味着字段…”,“m”)) file1 = ' /用户/ zoleak /文档/数据/帕特丽夏/ ERAi.T.00.2015.1p5.45N45S.nc ';file2 = ' /用户/ zoleak /文档/数据/帕特丽夏/ ERAi.U.00.2015.1p5.45N45S.nc ';file3 = ' /用户/ zoleak /文档/数据/帕特丽夏/ ERAi.V.00.2015.1p5.45N45S.nc ';file4 = ' /用户/ zoleak /文档/数据/帕特丽夏/ ERAi.GEO.00.2015.1p5.45N45S.nc ';file5 = ' /用户/ zoleak /文档/数据/帕特丽夏/ ERAi.VORT.00.2015.1p5.45N45S.nc ';file6 = ' /用户/ zoleak /文档/数据/帕特丽夏/ ERAi.PV.00.2015.1p5.45N45S.nc ';%读文件lat = ncread (file1、“纬度”);朗= ncread (file1、经度);水平= ncread (file1、“水平”); u_data=ncread(file2,'u'); v_data=ncread(file3,'v'); vort_data=ncread(file5,'vo'); %Format Files x=lon(28:121); y=lat(1:31); [nlons,nlats,ntimes]=size(vort_data); u_data=u_data(28:121,1:31,4,:); v_data=v_data(28:121,1:31,4,:); vort_data=vort_data(28:121,1:31,4,:); u_data=squeeze(squeeze(u_data)); v_data=squeeze(squeeze(v_data)); vort_data=squeeze(squeeze(vort_data)); %% clf; lat_avg=mean(vort_data(5:15,:,:),1); LONLIMS=[-139.5 -60]; LATLIMS=[0 30]; [lon_plot,lat_plot]=meshgrid(x,y); proj('mercator','lon',LONLIMS,'lat',LATLIMS); %m_quiver(lon_plot,lat_plot,u_data(:,:)',v_data(:,:)','LineStyle','-','Color',[0 0 0],'AutoScaleFactor',2); hold on; contourf(lon_plot,lat_plot,lat_avg(:,:)','LevelList',[-6e-4:1e-5:6e-4],'LineColor','none') coast('patch',[1 1 1],'linewi',2); grid('linewi',0.5,'tickdir','out','linest','none'); set(gca,'FontSize',14); set(gcf,'Color','white'); hcb=colorbar('eastoutside'); title(['5N-20N,700mb Vorticity']); set(hcb,'YTick',[-1e-4:1e-5:1e-4]) caxis([-.5e-4 .5e-4]) save_name1=strcat('/Users/zoleak/Documents/figures/HOVMOLLER/PAT_VORT'); print(save_name1,'dpdf'-r600);
\ endgroup美元

    2答案2

    2
    \ begingroup美元

    这是一个例子contourf。诀窍是在适当取样3 d数组:

    x = linspace(0,π,20);y = linspace(0,π,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(:)) +兰德(大小(X3d));dat2dx = 7 * sin (X2d) + 5 * cos (y (5)) + T2dx / max (T2dx(:)) +兰德(大小(X2d));%在y (5) dat2dy = 7 * sin (x (12)) + 5 * cos (Y2d) + T2dy / max (T2dy(:)) +兰德(大小(Y2d));在x(12) % % %图(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)')
    \ endgroup美元
      0
      \ begingroup美元

      我没有在MATLAB编程在相当长一段时间,但我记得做一些Hovmoller图在我的研究生学习。我只是看着我的旧代码,我使用了函数contourf,我的输入是一个二维矩阵数据(row-wise半径,列时间)。

      \ endgroup美元

        你的答案

        通过点击“发布你的答案”,你同意我们服务条款,隐私政策饼干的政策

        不是你要找的答案?浏览其他问题标记问你自己的问题