91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 37.8MB
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發布日期: 2023-07-17
  • 語言: 其他
  • 標簽:

資源簡介

利用稀疏字典表示、OMP算法進行高光譜圖像分類,內含高光譜數據。

資源截圖

代碼片段和文件信息

clear;
clc;
load?datalab.mat?data???????????????%讀取數據,包含標記的數據data.fet和對應的分類data.lab


%初始化

K?=?3;??????????????????????????????%OMP算法中信號的稀疏度
loopCnt?=?10;???????????????????????%為減少隨機性而計算10次,結果取平均值
trnPer?=?0.2;???????????????????????%訓練數據所占的百分比20%

clsCnt?=?16;????????????????????????%分類的數量
clsNum?=?zeros(1?clsCnt);??????????%每個類別的數據的總數量
trnNum?=?zeros(1?clsCnt);??????????%每個類別的數據選作訓練數據的數量
tstNum?=?zeros(1?clsCnt);??????????%每個類別的數據選作測試數據的數量
conMat?=?zeros(clsCntclsCnt);??????%混淆矩陣,保存測試數據的預測類別與實際類別的關系

?for?i?=?1?:?clsCnt
???index?=?find(data.lab?==?i);?????????????????%找到標記為i的數據的下標
???clsNum(i)?=?size(index1);???????????????????%標記為i的數據的總數量
???trnNum(i)?=?ceil(clsNum(i)?*?trnPer);????????%選取作為訓練樣本的數量
???tstNum(i)?=?clsNum(i)?-?trnNum(i);???????????%剩余的為測試樣本的數量
?end


%開始計算

for?loop?=?1?:?loopCnt??????????????%重復10次
????trnFet?=?[];????????????????????????%保存訓練數據
????trnLab?=?[];????????????????????????%保存訓練數據對應的類型
????tstFet?=?[];????????????????????????%保存測試數據
????tstLab?=?[];????????????????????????%保存測試數據對應的類型
????
????%每種類別隨機選取20%作為樣本數據
????for?i?=?1?:?clsCnt
???????index?=?find(data.lab?==?i);??????????????????%找到標記為i的數據的下標
???????random_index?=?index(randperm(length(index)));%結果為打亂順序后的下標序列

???????index?=?random_index(1:trnNum(i));????????????%在亂序中取前20%作為訓練樣本,index保存它們的下標
???????trnFet?=?[trnFet?data.fet(index:)‘];?????????%將訓練樣本的數據依次填充進trnFet數組
???????trnLab?=?[trnLab?ones(1length(index))*i];????%將訓練樣本的標記依次填充進trnLab數組

???????index?=?random_index(trnNum(i)+1:end);????????%亂序中剩余的為測試樣本,index保存它們的下標
???????tstFet?=?[tstFet?data.fet(index:)‘];?????????%將測試樣本的數據依次填充進tstFet數組
???????tstLab?=?[tstLab?ones(1length(index))*i];????%將測試樣本的標記依次填充進tstFet數組
????end

????%用OMP算法預測訓練數據的分類
????trnFet?=?trnFet./repmat(sqrt(sum(trnFet.*trnFet))[size(trnFet1)?1]);??%對訓練樣本做歸一化處理
????tstFet?=?tstFet./repmat(sqrt(sum(tstFet.*tstFet))[size(tstFet1)?1]);??%對測試樣本做歸一化處理

????for?i?=?1?:?size(tstFet2)??????????????%對每一個測試樣本i做預測
???????x?=?tstFet(:i);?????????????????????%提取出某個測試樣本的200維數據x
???????sparse?=?OMP(trnFetxK);????????????%用OMP算法求出其稀疏系數矩陣
???????residual?=?zeros(1clsCnt);??????????%該組樣本對每個類別的重構冗余
???????for?j?=?1:1:clsCnt???????????????????%將該測試樣本重構成每一種類別
???????????index?=?find(trnLab?==?j);???????%選取字典中類別為j的數據
???????????D_c?=?trnFet(:index);???????????%字典中類別為j的列
???????????s_c?=?sparse(index);?????????????%稀疏矩陣中本應為j類的位置的系數
???????????temp?=?x?-?D_c*s_c;??????????????%
???????????residual(j)?=?norm(temp2);??????%計算重構冗余
???????end
???????preLab?=?find(residual?==?min(residual));?????%找出重構冗余最小的類別,即為預測的類別
???????conMat(preLab(1)tstLab(i))?=?conMat(preLab(1)tstLab(i))?+?1;?%根據實際類別與預測結果,更新混淆矩陣
????end
end

for?i?=?1?:?clsCnt
????conMat(:i)?=?conMat(:i)?./?(loopCnt?*?tstNum(i));
end

ave_acc?=?sum(diag(conMat))/clsCnt
printConMat(conMat);

save?result.mat

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3415??2017-10-11?15:26??omp\classifier.m

?????文件???21909979??2017-05-11?22:40??omp\datalab.mat

?????文件????????836??2017-05-12?16:39??omp\OMP.m

?????文件???????1555??2017-05-12?16:55??omp\printConMat.m

?????文件???17725409??2017-10-25?09:26??omp\result.mat

?????目錄??????????0??2017-10-25?09:09??omp

-----------?---------??----------?-----??----

?????????????39641194????????????????????6


評論

共有 條評論