【20180419】【Matlab】Matlab中.M文件和.mat文件的区别以及.mat文件的生成和调用方法

  • .m文件和.mat文件的区别

1. .M文件 是指Matlab中保存代码的文件;

2. .mat文件 是指存储数据的数据文件;

  • .mat文件的生成和调用方法

1. 生成数据文件:用save命令

save('data.mat','a','b','c') %假如有三个变量'a', 'b', 'c',要将它们保存在'data'数据文件中。

2. 调用数据文件:用load命令

v = load('data.mat','a') %将'data'数据文件中'a'变量读出存到'v'中。

### 使用MATLAB处理高光谱数据 为了将高光谱 `.dat` 文件对应的头文件(`.hdr`)合并并保存为 `.mat` 格式,在 MATLAB 中可以采用如下方法: #### 准备工作 确保安装了必要的工具箱,如 Mapping Toolbox 或者 Hyperspectral Imaging Library (HSI),这些工具可以帮助解析 HDR 文件。 #### 加载HDR文件中的元数据 通过 `hsgeninfo` 函数来加载 HDR 文件的信息。此函数可以从 ENVI 头文件中提取波段数量、样本数以及其他重要参数[^1]。 ```matlab % 假设 hdrFilePath 是指向 .hdr 文件路径的字符串变量 metadata = hsgeninfo(hdrFilePath); disp(metadata); % 显示读取到的元数据信息 ``` #### 读取DAT文件的数据矩阵 根据从 HDR 文件获取的信息,利用低级 I/O 函数如 `fopen`, `fread` 来逐字节读入原始二进制数据,并按照指定格式重组为三维数组(即图像立方体)。如果已知数据是以特定顺序存储,则可以直接调用相应的函数完成这一步骤。 ```matlab fid = fopen(datFilePath, 'r'); if fid == -1 error('无法打开文件'); end try dataMatrix = fread(fid, [samples lines bands], '*float32'); % 调整类型匹配实际数据 catch ME fclose(fid); rethrow(ME); finally fclose(fid); end dataCube = permute(reshape(dataMatrix, samples, lines, []), [2 1 3]); clear dataMatrix; ``` 这里假设 `samples`, `lines`, `bands` 已经由前面提到的方法获得;而 `*float32` 表明数据以单精度浮点形式存储——具体取决于实际情况调整该部分代码。 #### 将结果保存至MAT文件 最后一步就是把重构后的高光谱图像以及任何其他想要保留的相关信息一起存入一个新的 `.mat` 文件里去。 ```matlab save(matFileName, 'dataCube', '-v7.3'); % 推荐使用 v7.3 版本以便支持大尺寸阵列 ``` 上述过程展示了如何在 MATLAB 环境下实现对高光谱 `.dat` 及其关联 `.hdr` 的导入与导出操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Satisfying

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值