如何用Matlab和Python读取Netcdf文件

NetCDF(网络通用数据格式)文件后缀为.nc,文件中的数据结构包含维(dimensions)、变量(variables)和属性(attributes)三种描述类型,每种类型都会被分配一个名字和一个ID。

从数学上来说,netcdf存储的数据就是一个多自变量的单值函数。用公式来说就是f(x,y,z,...)=value,函数的自变量x,y,z等在netcdf中叫做维(dimension)或坐标轴(axis),函数值value在netcdf中叫做变量(Variables)。而自变量和函数值在物理学上的一些性质,比如计量单位(量纲)、物理学名称等等在netcdf中就叫属性(Attributes)。

NetCDF name{
Dimensions:… //定义维数
Variables:… //定义变量
Attributes:… //属性
Data:…//数据
}

  读取.nc文件可以用python的netCdf4模块,也可以用ncbrowser,这里我用的是Matlab。

MATLAB具有数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理、数字信号处理、财务与金融工程等功能。

这是matlab打开之后的基本界面,上方为命令功能区,右侧为命令行输入栏,左上角为当前路径中文件夹详情,左下角为软件工作区。

读取nc文件的命令

%% 显示结构 
% ncdisp(ncFilePath);%显示nc文件的所有结构,以便大概了解里面的内容 
% ncdisp(ncFilePath,'evap');%显示指定变量的内容,注意一定要是变量variables才可以 
% ncdisp(ncFilePath,'/','min');%简单显示结构以及定义 
% ncdisp(ncFilePath,'/','full');%全部显示所有结构和定义信息

然后调用ncread读取变量值:

vardata = ncread(source,varname)

vardata = ncread(source,varname,start,count,stride)

(1)start

varname所指定变量的每一维的开始读取的位置

(2)count

从start指定的开始位置算起,一共读取的每一维要素的数目

(3)stride

从start开始,每一维读取的数目为count时,每一维的读取的步长

更新:用python读取.nc文件

安装netCDF4库

导入nc库,用Dataset函数读取文件信息

f.variables.keys()读取所有变量名称

f.variables.items()读取所有变量信息

读取单个变量的值

以上就是如何用Matlab和Python读取Netcdf文件的详细内容,更多关于Matlab和Python读取Netcdf文件的资料请关注我们其它相关文章!

(0)

相关推荐

  • python matlab库简单用法讲解

    大部分的库都是对应不同的接口使用,然而本期给大家带来的库有点与众不同,涉及的方向是图形化的界面,使用上并不困难,但是也存在着需要注意的使用的,比如安装方面,不同于其他的第三方库,安装的方式不一样,且还需要测试安装后的效果,不然很难去掌控它,好了,下面就来详细的介绍. matlab库安装: python setup.py install 验证安装成功: matlabengineforpython R2017a 语法: matlab.plot([],'') 使用代码: import matlab.e

  • matlab、python中矩阵的互相导入导出方式

    还有一种最流行的h5py.. 过几天更新 ------------在python中导出矩阵至matlab------------ 如果矩阵是mxn维的. 那么可以用 : np.savetxt('dev_ivector.csv', dev_ivector, delimiter = ',') 对应matlab读取为: dev_ivec = csvread('dev_ivector.csv') ###csv格式其实就内定了结构体 如果矩阵是(n,)这种格式.['aagj' 'aagy' 'aann'

  • 基于python实现matlab filter函数过程详解

    matlab中的filter函数: y = filter(b,a,x) python实现matlab中的filter函数 def filter_matlab(b,a,x): y = [] y.append(b[0] * x[0]) for i in range(1,len(x)): y.append(0) for j in range(len(b)): if i >= j : y[i] = y[i] + b[j] * x[i - j ] j += 1 for l in range(len(b)-

  • 使用matlab或python将txt文件转为excel表格

    假设txt文件为: 一.matlab代码 data=importdata('data.txt'); xlswrite('data.xls',data); 二.python代码 利用pandas的DataFrame输出为Excel[但是输出会有索引] 结果为: import numpy as np import pandas as pd def getData(path): with open(path, 'r') as file: data = [] for line in file.readl

  • Python使用Matlab命令过程解析

    为了在python中使用matlab命令,也就是import numpy as np 和 import matplotlib.pyplot as plt这两个命令能运行,需要在cmd命令窗口输入 pip install matplotlib,要不然出现 import numpy as np ModuleNotFoundError: No module named 'numpy'的错误. 为达到这一步需要升级pip,这时需在cmd命令窗口输入python -m pip install --upgr

  • 详解如何在python中读写和存储matlab的数据文件(*.mat)

    背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以某些matlab从图片处理得到的label信息都会以.mat文件供python读取,同时也python产生的结果信息也需要matlab来做进一步的处理(当然也可以使用txt,不嫌麻烦自己处理结构信息). 介绍 matlab和python间的数据传输一般是基于matlab的文件格式.mat,pytho

  • 在python中计算ssim的方法(与Matlab结果一致)

    如下代码可以计算输入的两张图像的结构相似度(SSIM),结果与matlab计算结果一致 // An highlighted block import cv2 import numpy as np def ssim(img1, img2): C1 = (0.01 * 255)**2 C2 = (0.03 * 255)**2 img1 = img1.astype(np.float64) img2 = img2.astype(np.float64) kernel = cv2.getGaussianKe

  • Python实现线性判别分析(LDA)的MATLAB方式

    线性判别分析(linear discriminant analysis),LDA.也称为Fisher线性判别(FLD)是模式识别的经典算法. (1)中心思想:将高维的样本投影到最佳鉴别矢量空间,来达到抽取分类信息和压缩特种空间维数的效果,投影后保证样本在新的子空间有最大的类间距离和最小的类内距离.也就是说在该空间中有最佳的可分离性. (2)与PCA的不同点:PCA主要是从特征的协方差出发,来找到比较好的投影方式,最后需要保留的特征维数可以自己选择.但是LDA更多的是考虑了类别信息,即希望投影后不

  • windows下python 3.9 Numpy scipy和matlabplot的安装教程详解

    学习python过程中想使用python的matlabplot绘图功能,遇到了一大批问题,然后一路过关斩将,最终安装成功,实为不易,发帖留念. 1 首先打开cmd win+r 2 pip安装 pip3 install --user numpy scipy matplotlib –user 选项可以设置只安装在当前的用户下,而不是写入到系统目录.默认情况使用国外线路,国外太慢,我们使用清华的镜像就可以: pip3 install numpy scipy matplotlib -i https://

  • python、Matlab求定积分的实现

    python求定积分 计算 from sympy import * x = symbols('x') print(integrate(sin(2*x)/(1+x**2), (x, 0, 3))) sympy库中integrate函数 integrate(f, (x, lower_bound, upper_bound)) # f-函数,x-变量,lower_bound-下限,upper_bound-上限 但是发现求不出来,如果是sin(2*x)就可以,为什么? matlab求定积分 syms x

随机推荐