我已经使用NetCDF数据在Python中创建了一个等高线图。我绘制的是x方向上的速度,形状为(1,124,128,128),其中维度为(time,z,y,x)。我迷路的地方是让我的情节在MatLab中工作。在Python中工作的代码是,
import netCDF4 as NC
from netCDF4 import Dataset as NetCDFFile
import matplotlib.pyplot as plt
import numpy as np
nc = NetCDFFile('XYZ_time_1.nc')
u = nc.variables["u"][:,:,:,:] # Velcity in x direction, size(1, 124, 128, 128), [t,z,y,x]
plt.contourf(u[0,:,:,0]) # time[0], z[:], y[:], x[0]
下面是我尝试用MatLab进行翻译的方法。数组的大小与Python解释的大小(128,128,124,1)和维度(x,y,z,time)的大小相反。我是个新手,不知道如何复制代码。在MatLab中,Size()函数中不包括时间维度。如何使用数组切片在MatLab中绘制等高线图,以复制上面的Python代码中的结果?
filename = 'XYZ_time_1.nc';
ncdisp(filename);
u = ncread(filename, 'u'); # size(128, 128, 124), time not included?
contour(:,:,1) # (x, y, z)
上面的MatLab代码将适用于下面的特殊情况。数组索引是我开始迷路的地方。对于固定的x[index],我希望能够y[:]对z[:]。您如何安排索引片才能使其工作?
print(np.shape(nc.variables["u"][0,0,:,:])) # t[0], z[0], y[:],x[:]
plt.contourf(nc.variables['u'][0,0,:,:])
1条答案
按热度按时间sqxo8psd1#
我已经能够使用MatLab置换函数回答我自己的问题。如果您正在尝试将数组切片在Python语言中转换为MatLab,它可能如下所示。
翻译成matlab的是