MATLAB实现高光谱分类算法

news/2025/11/18 15:49:22/文章来源:https://www.cnblogs.com/she20250124/p/19238121

一、环境配置与数据加载

% 安装必要工具箱
% 需要Image Processing Toolbox和Statistics and Machine Learning Toolbox%% 数据加载(Indian Pines数据集)
load('Indian_pines_corrected.mat'); % 原始数据
load('Indian_pines_gt.mat');        % 标注数据% 转换为MATLAB数组
X = indian_pines_corrected;         % 145x145x220
gt = indian_pines_gt;               % 145x145% 去除无效样本(标签为0)
valid_indices = gt(:) ~= 0;
X = X(valid_indices);
gt = gt(valid_indices);% 数据维度调整
X = reshape(X, [], size(X,3));      % (145 * 145)x220 = 21025x220
gt = gt(valid_indices);

二、数据预处理

1. 光谱归一化

% 最小-最大归一化
X_normalized = (X - min(X(:))) ./ (max(X(:)) - min(X(:)));% PCA降维(保留95%方差)
[coeff, score, ~] = pca(X_normalized);
cum_var = cumsum(var(score))/sum(var(score));
n_components = find(cum_var >= 0.95, 1);
X_pca = score(:,1:n_components);

2. 数据划分

% 划分训练集/测试集(7:3)
rng(0); % 固定随机种子
cv = cvpartition(size(X_pca,1),'HoldOut',0.3);
X_train = X_pca(cv.training,:);
y_train = gt(cv.training);
X_test = X_pca(cv.test,:);
y_test = gt(cv.test);

三、监督分类算法

1. 支持向量机(SVM)

%% SVM分类
tic;
svmModel = fitcecoc(X_train, y_train, 'Learners', 'linear', 'Coding', 'onevsall');
y_pred = predict(svmModel, X_test);
accuracy = sum(y_pred == y_test)/numel(y_test);
fprintf('SVM Accuracy: %.2f%%
', accuracy*100);
toc;

2. 随机森林(Random Forest)

%% 随机森林分类
tic;
rfModel = TreeBagger(200, X_train, y_train, 'Method', 'classification');
y_pred = predict(rfModel, X_test);
accuracy = sum(strcmp(y_pred, num2str(y_test'))) / numel(y_test);
fprintf('RF Accuracy: %.2f%%
', accuracy*100);
toc;

四、非监督分类算法

1. K-means聚类

%% K-means分类
tic;
[idx, centers] = kmeans(X_pca, 16, 'MaxIter', 1000, 'Replicates', 5);
y_pred = idx;% 计算轮廓系数
silhouetteScore = mean(silhouette(X_pca, idx));
fprintf('K-means Silhouette Score: %.2f
', silhouetteScore);
toc;% 可视化
figure;
gscatter(X_pca(:,1), X_pca(:,2), y_pred);
title('K-means Clustering Results');
xlabel('PC1'); ylabel('PC2');

五、深度学习方法(3D-CNN)

1. 网络架构定义

layers = [image3dInputLayer([9 9 200](@ref) % 9x9空间窗口,200波段convolution3dLayer([3 3 7], 32, 'Padding', 'same')batchNormalizationLayerreluLayermaxPooling3dLayer([2 2 2](@ref)convolution3dLayer([3 3 5], 64, 'Padding', 'same')batchNormalizationLayerreluLayermaxPooling3dLayer([2 2 2](@ref)fullyConnectedLayer(128)reluLayerdropoutLayer(0.5)fullyConnectedLayer(16)softmaxLayerclassificationLayer];

2. 模型训练

%% 数据准备
X_train_reshaped = reshape(X_train', 9,9,200,[]);
X_test_reshaped = reshape(X_test', 9,9,200,[]);% 数据增强
augmentedData = imageDataAugmenter('RandRotation', [-15,15], 'RandXReflection', true);
augmentedSet = augmentedImageDatastore([9 9 200], X_train_reshaped, y_train, 'DataAugmentation', augmentedData);% 训练配置
options = trainingOptions('adam',...'MaxEpochs', 50,...'MiniBatchSize', 64,...'InitialLearnRate', 0.001,...'Shuffle', 'every-epoch',...'ValidationData',{X_test_reshaped, y_test},...'Plots', 'training-progress');% 模型训练
net = trainNetwork(augmentedSet, layers, options);

3. 分类预测

%% 预测与评估
y_pred = classify(net, X_test_reshaped);
accuracy = sum(y_pred == y_test)/numel(y_test);
fprintf('3D-CNN Accuracy: %.2f%%
', accuracy*100);% 混淆矩阵
figure;
confusionchart(y_test, y_pred);
title('Confusion Matrix');

六、特征可视化与分析

1. 光谱特征提取

% 提取训练样本光谱特征
sample_indices = randperm(size(X_pca,1), 5);
sample_spectra = X_pca(sample_indices,:);% 绘制光谱曲线
figure;
plot(1:size(sample_spectra,2), sample_spectra');
xlabel('波段序号'); ylabel('反射率');
legend('样本1','样本2','样本3','样本4','样本5');
title('典型地物光谱特征');

2. t-SNE降维可视化

%% t-SNE可视化
tic;
Y = tsne(X_pca, 'NumDimensions', 2, 'Perplexity', 30);
toc;figure;
gscatter(Y(:,1), Y(:,2), y_train);
title('t-SNE降维可视化');
xlabel('t-SNE 1'); ylabel('t-SNE 2');

参考代码 高光谱分类算法代码 www.youwenfan.com/contentcnl/79437.html

建议结合ENVI工具进行数据预处理,并使用MATLAB Parallel Server加速大规模计算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/969045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年苏州地区PLC控制柜生产厂家深度推荐

在工业自动化浪潮席卷的今天,一个优质的PLC控制柜厂家不仅是设备的供应商,更是企业实现智能化升级的战略伙伴。位于中国经济活力前沿——长三角核心区域的昆山华普拓电气有限公司,凭借其深厚的技术积淀、前瞻性的研…

理解ndarray的几个重要属性

理解ndarray的几个重要属性 NumPy的ndarray(N-dimensional array,n维数组)是 NumPy 库中最核心的数据结构,用于高效地存储和操作同类型、固定大小的多维数组。 在学习NumPy前,可以先回顾多维数组、线性代数,用Nu…

Spring Boot 实现 DOCX 转 PDF(基于 docx4j 的轻量级开源方案) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【FAQ】HarmonyOS SDK 闭源开放能力 — Notification Kit

1.问题描述: 获取应用是否开启了允许通知权限后,如何引导跳转开启权限通知的设置页面? 解决方案:通过isNotificationEnabled方法查询通知是否授权,参考isNotificationEnabled用法。2.若申请通知权限被拒绝后,后续…

2025年中国试验机厂家推荐榜:十强排名与性能评测(山东万辰、盛林试验机领衔国产标杆)

2025年中国试验机厂家推荐榜:十强排名与性能评测(山东万辰、盛林试验机领衔国产标杆)在航空航天、机械制造、新能源、医疗设备、科研院校等领域,试验机作为材料力学性能检测的核心装备,直接决定产品质量与科研数据…

逻辑芯片 - 电子开关

逻辑芯片 - 电子开关ADG408、ADG409、ADG1408、ADG1409、ADG411、ADG1411、DG467系列和WAS3157BSTM32开发项目:一些模拟电子开关的介绍与驱动本文档详细介绍了ADG408、ADG409、ADG1408、ADG1409、ADG411、ADG1411、DG…

2025 最新压花辊源头厂家权威推荐榜:国际协会测评认证,覆盖多材质适用场景的品质厂商精选布料压花辊 / 木材压花辊 / 真皮压花辊 / 铝膜压花辊 / 珍珠棉压花辊 / 薄膜压花辊公司推荐

引言 在全球压花辊采购市场中,“源头直采” 已成为制造企业控制成本、保障产能的关键路径,但市场中资质参差不齐的供应商让采购决策充满挑战。为解决这一痛点,本次榜单依托国际压花设备行业协会(IAE)最新测评体系…

2025年铝爬架网厂家权威推荐:新型建筑爬架网/米字爬架网/外墙建筑爬架网源头厂家精选

随着中国建筑业迈向高质量发展新阶段,铝爬架网作为建筑施工安全防护的核心材料,正迎来产品升级与市场扩容的重要机遇期。 在建筑行业标准化、绿色化发展的推动下,铝爬架网市场呈现出稳定增长态势。作为建筑施工安全…

CPP 格式化文件 .clang-format

--- Language: Cpp # BasedOnStyle: ChromiumColumnLimit: 0 # 注释与代码不再受列数限制 ReflowComments: false # 禁止自动重新排版注释MaxEmptyLinesToKeep: 1 SeparateDefinitionBlocks: Always …

2025年智能化矿山模型沙盘实力厂家权威推荐榜单:煤矿地质模型/井下开采仿真模型/智能矿井模型源头厂家精选

中国智慧矿山市场规模预计在2025年将突破1000亿元,其中智能化矿山模型沙盘作为矿山数字化建设的重要展示工具,年需求量增长率稳定在20%以上。 智能化矿山模型沙盘通过三维可视化、动态仿真和物联网技术,为矿山企业提…

com.unitree.doggo2

This XML file does not appear to have any style information associated with it. The document tree is shown below. <manifest xmlns:android="http://schemas.android.com/apk/res/android" andro…

通过SSH转发端口

情景 存在一个Linux服务器,只开放22端口。通过ssh转发将服务转发到中转服务器。 命令 ssh -L 0.0.0.0:8888:localhost:80 liuyang@172.24.52.208 -p 22nohup sudo autossh -M 0 -o "ServerAliveInterval 30"…

Codeforces Round 1064题解

太摆了QWQ前言 当时非常不想打但还是打了,非常没有耐心,导致B题题目太长不想看,C题题目看错导致20分钟没了,然后就不想做了,于是现在补题,准备今晚的div3.如果我有耐心的话。 题目 A. Same Difference 只能前一个…

2025 最新工业检测仪源头厂家推荐排行榜:粉尘气体 / 颗粒物 / 固体流量等设备靠谱企业精选固体流量/空间环境粉尘/便携式粉尘检测仪公司推荐

引言 随着环保政策趋严与工业智能化升级,粉尘浓度、气体含量、固体流量等检测设备成为企业合规运营的核心保障。当前市场中,检测仪器品牌良莠不齐,部分厂家存在技术滞后、检测精度不足、售后缺失等问题,导致企业采…

CVPR 2024 目标检测!开放词汇

CVPR 2024 目标检测!开放词汇01 论文概述 论文名称:YOLO-World: Real-Time Open-Vocabulary Object Detection 会议名称:CVPR (2024) 👉一键直达论文 [👉Lab4AI大模型实验室论文](https://www.lab4ai.cn/pape…

国标GB28181算法算力平台EasyGBS如何实现停车场监控系统的高效统一管理?

在智慧城市建设进程中,城市机动车保有量激增,传统停车场管理面临设备管理复杂、安防事件响应滞后、运营效率低下等痛点。本文将深入解析,基于国标GB28181协议的国标GB28181算法算力平台EasyGBS,如何通过 “统一接入…

LiteFlow(规则引擎)

LiteFlow(规则引擎)简介LiteFlow是一款轻量级、组件式的规则引擎框架,支持业务逻辑的编排和热刷新,适用于复杂业务场景的组件化管理。有时间再写……

SCQL:安全协同查询平台的技术解析

SCQL:安全协同查询平台的技术深度解析 在当今数据驱动的时代,跨机构数据协同分析需求日益增长,但数据隐私和合规要求(如GDPR)导致了数据孤岛问题。Secure Multi-Party Computation(MPC)技术为实现安全协同分析提…

linux apache 解析php

在 Linux 系统中,Apache 服务器默认使用 mod_php 模块来解析 .php 文件。以下是一些关于 Apache 解析 PHP 的常见命令和配置方法:一、确认 Apache 是否支持 PHP apache2ctl -t 如果输出中包含 mod_php,说明 Apache …

linux apache 的日志

在 Linux 系统中,Apache 服务器的日志通常位于以下路径: 1. Apache 2 的日志目录错误日志:/var/log/httpd/error_log(对于 Apache 2) 访问日志:/var/log/httpd/access_log(对于 Apache 2)2. Apache 2.4 的日志…