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美元

        你的答案

        通过点击“发布你的答案”,你同意我们服务条款并承认您已阅读并理解我们的隐私政策的行为准则

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