有没有办法轻松将 .mat 文件转换为 .nc 文件?

2024-01-14

尝试将数据从.mat文件到一个.nc文件,这样我就可以使用 NCVIEW 快速查看数据。

我想保存到的变量.nc文件看起来像这样:

  • 变量名称:Watts_Map
  • 变量说明:Wattages plotted over a set of geographic grid cells
  • 可变尺寸:<225x61x2920 double>

    所以这将是一个 3-D netCDF 文件。

矩阵是225x61,对于每个时间步长。有2920时间步长。每个网格单元包含一个瓦数值。所以有2920维数矩阵225x61.

  • 经度:0W to 140W, 0.625 deg分辨率,表示为225

  • 纬度:0N to 30N, 0.5 deg分辨率,表示为61

似乎没有一种直观的方法可以做到这一点。试nccreate and ncwrite.

关于如何做到这一点有什么建议吗?


这是我正在尝试的代码:

% Clear out all data and clean up workspace

clc;
clear all;

% load the .mat file to be converted to netcdf file

%load('2000_ATL_Watts_Maps_inc_Land.mat');

% variable to be taken from .mat file and saved as netcdf file
% Watts_Map = W/sq m 
% Dimensions:  225x61x2920 (lon x lat x time)
% 
% Put another way, there are 2920 maps of size 225x61, containing W/sq m
% values for each grid cell
%
% Resolution:  longitude = 0.625 deg
%              latitude = 0.5 degree
%              time = starts at midnight on Jan 1st of the year, increments
%                     every 3 hours.  So timestep 1 is midnight on Jan 1st, 
%                     timestep 2 is 3am on Jan 1st, and so on.

% Create and write data to netcdf file

nccreate('test_files.nc','Watts','Dimensions',{'time' 2920 'lon' 225 'lat' 61});

希望这能让您开始:

%% Create
!rm test_files.nc
nccreate('test_files.nc','Watts','Dimensions',{'time' 2920 'lon' 225 'lat' 61});
nccreate('test_files.nc','lat','Dimensions',{'lat' 61});
nccreate('test_files.nc','lon','Dimensions',{'lon' 225});
nccreate('test_files.nc','time','Dimensions',{'time' 2920});
ncdisp('test_files.nc');

%% write dimensions
% https://www.unidata.ucar.edu/software/netcdf/docs/netcdf/Dimensions.html

%Latitude: 0N to 30N, 0.5 deg resolution, denoted by 61
ncwrite('test_files.nc','lat',0:.5:30);
%Longitude: 0W to 140W, 0.625 deg resolution, denoted by 225
ncwrite('test_files.nc','lon',0:.625:140);
% Time?

%% write data
ncwrite('test_files.nc','Watts',rand(2920,225,61));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法轻松将 .mat 文件转换为 .nc 文件? 的相关文章

  • 使用 R 将数据写入 netCDF 文件

    我正在尝试使用我自己的 csv 文件中的数据来使用 R 包 ncdf4 创建 netCDF 文件 我的数据集由 3 列组成 经度 纬度和温度 有 2592 行 我一直按照包中的建议将维度和变量添加到 netCDF 文件中 一切都很顺利 直到
  • 是否有一个函数可以检查矩阵是否对角占优(行占优)

    矩阵是对角占优 http en wikipedia org wiki Diagonally dominant matrix 按行 如果对角线处的值在绝对意义上大于该行中所有其他绝对值的总和 对于列也是如此 只是相反 matlab中有没有函数
  • MATLAB:比较两个不同长度的数组

    我有两个长度不同的数组 由于采样率不同 需要比较 我想对较大的数组进行下采样以匹配较小的数组的长度 但是该因子不是整数而是小数 举个例子 a 1 1 375 1 75 2 125 2 5 2 875 3 25 b 1 2 3 有什么方法可以
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 在 Matlab 中显示有理数

    我有两个整数 m n 它们一起形成 m n 形式的有理数 现在我只想以这种理性的形式在 Matlab 中显示它们 我可以通过这样做来做到这一点 char sym m n 所以 如果 例如m 1 n 2 Matlab将显示1 2 然而 如果m
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • for 循环中的绘图没有可见点

    我正在努力解决我想使用 for 循环制作的情节 我知道当我在循环之后添加它时它会起作用 只是一个简单的图 但我想用另一种方式尝试一下 fib ones 1 10 for k 3 10 hold on fib k fib k 1 fib k
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • matlab中更快的插值方法

    我正在使用 interp1 来插值一些数据 temp 4 30 4 rand 365 10 depth 1 10 dz 0 5 define new depth interval bthD min depth dz max depth ne
  • 如何将数据传递给 MATLAB oncleanup 函数?

    我有一个编译好的 matlab 程序 可以自动调整机器参数 在调整周期结束时 我需要恢复一些原始设置 有时会发生意外错误 有时用户会发现调整算法未正常工作 因此应终止 使用 control C 如果发生可预测的错误 我可以使用 try ca
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0

随机推荐