云间の文章摘要
TianliGPT
生成中...

MATLAB大纲

  • 基础语法
    • 基本类型
      • 基本类型和运算
      • 字符串
      • 时间和日期
    • 高级类型
      • 单元数组{...}(元素可以是不同的类型)
      • 结构数组/结构体args.x
      • 表、时间表
      • 其他:稀疏矩阵、字典、分类数组
    • 程序结构
      • 分支
      • 循环
      • 函数
    • 文件读写
    • 错误和调试
  • 矩阵运算张量运算:多维数组
    • 数组操作
    • 数组运算

文件读写

mat文件

  • 读取:load
  • 写入:save

datas.mat,变量A

matlab
save datas A;
load datas;

nc文件

matlab
clc; clear;
format default
path = 'cmems_mod_glo_phy_anfc_0.083deg_PT1H-m_1737117424162.nc';
ncdisp cmems_mod_glo_phy_anfc_0.083deg_PT1H-m_1737117424162.nc;
vars = {ncinfo(path).Variables.Name}
% format rational
time = datetime(1970,1,1) + ncread(path,'time')./(24*3600);
la = double(ncread(path,'latitude'));
lo = double(ncread(path,'longitude'));
temp = ncread(path,'thetao');
temp = temp(:,:,1,1)

% 确定数据的经纬度范围,并稍微扩展
latlim = [min(la)-1, max(la)+1]; % 纬度范围,扩展1度
lonlim = [min(lo)-1, max(lo)+1]; % 经度范围,扩展1度

% 清除当前图形窗口,为绘制新地图做准备
clf
% 创建一个新的轴对象,并设置地图投影为罗宾森投影,经度范围为0到360度
axesm('MapProjection','robinson','MapLatLimit', latlim, 'MapLonLimit', lonlim);
% 使用经度和纬度数据以及温度数据的转置绘制伪彩色图
pcolorm(la, lo, temp');
% 设置色彩插值方式,使色彩过渡更平滑
shading interp
% 绘制地图框架,并设置框架线宽和颜色
framem('FlineWidth',2,'FEdgeColor','k')
% 调整地图显示,使其充满轴区域
tightmap
% 设置色彩图,使用32级的jet色彩图
colormap(jet(32));
% 设置色彩图的显示范围
clim([-32,32])
% 添加颜色条,设置其属性,包括刻度值和字体大小
colorbar('ytick' ,-32:2:32,'fontsize',15)
% 隐藏坐标轴
axis off
% 加载海岸线数据
load coastlines
% 使用加载的海岸线数据绘制海岸线,颜色为黑色
geoshow(coastlat , coastlon , 'color', 'k')
% 在地图上添加温度单位文本,设置其位置和字体大小
text(2.65,1.5,'\circC','FontSize', 30)

cmems_mod_glo_phy_anfc_0.083deg_PT1H-m_1737117424162.nc

csv/xlsx文件

matlab
% 写入
writematrix(A,'datas.xlsx',Sheet='mysheet');
% 读取
sheets = sheetnames('datas.xlsx')
B = readmatrix('datas.xlsx',Sheet='Sheet1');

错误和调试

异常抛出

matlab
error('This is an error!')
assert(cond,msg) %不满足条件时触发
warning('This is an warning!')

异常处理

plaintext
try
语句块
catch [异常变量]
响应语句块
end

高级类型

单元数组/元胞数组/Cell

寻访数组

  • 穿透寻访

    • C{2,2}得到元素

    • x=[C{2,:}]多元素穿透寻访

  • 浅寻访

    • C(1,1)得到单元数组

类型转换

  • A = cell2mat(C)拼接
  • C = mat2cell(A,[2 2]行,[3 2]列)(必须指定)分割/分块矩阵
  • c = num2cell(a)分成单个元素
  • C = cellstr(A)字符串数组(不补空白符)

结构体

  • 使用.索引层级

稀疏矩阵

  • sparse(A)将矩阵A转换为稀疏矩阵(仅支持矩阵)