但是,Ph是高光谱影像,前两维是空间维,第三维度是光谱维,转换成二维矩阵,要求是一列是一个像元,一行对应的是一个波段的反射率,该怎么修改?
时间: 2024-03-03 13:52:53 浏览: 151
如果您需要将 `Ph` 转换为一个二维矩阵,其中每一列代表一个像元,每一行代表一个波段的反射率,则可以按照以下方式调整代码:
```
path = "C:\Users\Administrator\Desktop\MGM\0330MGM_instructions_files\try3_0519_PDS_Geoscience\cartOrder\cartorder\REF_26_3.mat";
load('wavelengths.mat');
load(path);
Ph = permute(Ph, [3, 1, 2]); % 调整 Ph 的大小为 54*850*850
Ph = reshape(Ph, size(Ph,1), []);
data = [wavelengths, Ph]; % 将 wavelengths 和 Ph 合并为一个矩阵
save('output26_3_try4_0603.asc', 'data', '-ascii');
```
这个代码将 `Ph` 的大小调整为 `54*850*850`,然后使用 `reshape` 将其转换为 `54*722500` 的二维矩阵,其中每一列代表一个像元,每一行代表一个波段的反射率。然后将 `wavelengths` 和 `Ph` 合并为一个矩阵 `data`,最后将 `data` 保存为 ASC 文件。
相关问题
已知Ph数组转换成2维的了,新建矩阵data怎么建
如果已知Ph数组已经转换成2维的了,那么新建矩阵data的代码可以这样写:
```
data = zeros(size(Ph,1), size(Ph,2)+1);
```
这里的size(Ph,1)表示Ph数组的行数,size(Ph,2)表示Ph数组的列数,然后在第二维上增加一个额外的元素,从而使得data矩阵的列数比Ph多1。函数zeros用于创建一个全0矩阵,行数为Ph的行数,列数为Ph的列数加1。
阅读全文