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

  • 大小: 4.89MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-09-26
  • 語言: 其他
  • 標簽: 2DLDA??

資源簡介

可實現的2DLDA算法,有mat,自己用的,直接可實現

資源截圖

代碼片段和文件信息

clc
close?all?hidden
clear?all
%%?導入之前生成的數據集
load?ORL2D_data

xx=5;%設循壞次數為50次
%%?分類標簽
groups=[];?????????%這一步用來給圖像加標簽,以確定是哪個人
for?i=1:cNum
????groups=[groupsones(1fperc)*i];%fperc為人臉庫中每個人有多少張圖像,如yale庫中每人有11張圖像,這個值也在Yale_data中,load進來就有的
end
groups=groups‘;????%通過上面的for循環,標簽已經加好
accuracy=[];
for?fftr=5?????????%取訓練樣本數為5,就是說一個人在人臉庫里有十幾張圖片,我只取出357張作為訓練,剩余的那些作為測試具體的你自己去設定
????all_accuracy=0;????%???
????errornum=0;??????%誤識數,就是識別錯誤的個數
????ave_times=0;?????%計算時間
????disp([‘2DLDAfftr=‘num2str(fftr)]);???%在commend??window中顯示訓練個數2DLDAfftr=35或7,用于觀察運行進度
????for?i=1:xx???????%每種訓練樣本數,計算50次,以求最終識別率的平均值,
????????t1=clock;????%設定開始時間
????????test_accuraty=0;??%識別率,先設為0,因為要進行循壞,所以在開始要清零
????????[test?train]?=?crossvalind(‘holdOut‘groupsfftr/fperc);%此步驟加上以下的4個步驟都是用于隨機選擇人臉庫中隨機選取每個人的fftr(前面已經設定)張圖像作為訓練樣本,剩余的作為測試圖像
????????train_samples=all_samples(::train);%隨機選取訓練人臉數據,這里?train_samples為3維,第一維表示一張圖像的行,第二維是表示圖像的列,第三維是說有多少個這樣的行和列的人臉,比如yale庫中15個人,每人11張圖像,那么每人選3個作為訓練,這里第三維就是3*15=45
????????train_data_labels=groups(train);???%加標簽,確定是哪個人的人臉圖像
????????test_samples=all_samples(::test);%這里是剩余的測試人臉圖像,同樣的原理
????????test_data_labels=groups(test);??%加標簽
????????
????????%%???以下是LDA處理過程
????????N=cNum*fftr;
????????[nSmpnFeanumtr]?=?size(train_samples);%size用于獲得矩陣尺寸,這里是三維,同上
????????ReducedDim?=?10;???%降溫幅度,把一幅圖像降到10維
????????mean_maxt=zeros(nSmpnFeacNum);%zeros用于分配一個全為0的,尺寸為(nSmpnFeacNum)的矩陣
????????mean_all=mean(train_samples3);%求矩陣間均值
????????for?j=1:cNum%for循環用于求類內均值,就是每個類的均值,同一個人的圖像屬于一個類
????????????mean_cNum=mean(train_samples(::1+fftr*(j-1):fftr*j)3);
????????????mean_maxt(::j)=mean_cNum;
????????end
????????Sb=zeros(nFea);
????????Sw=zeros(nFea);
????????for?m=1:cNum%以下是Sb計算類間離散度矩陣,具體參看文獻
????????????sb=(mean_maxt(::m)-mean_all)‘*(mean_maxt(::m)-mean_all);
????????????Sb=Sb+fftr*sb;
????????????for?n=1:fftr
????????????????X_t=train_samples(::n+fftr*(m-1));%以下是Sw計算類內離散度矩陣,具體參看文獻
????????????????sw=(X_t-mean_maxt(::m))‘*(X_t-mean_maxt(::m));
????????????????Sw=Sw+sw;
????????????end
????????end
????????Sb=(1/N)*Sb;
????????Sw=(1/N)*Sw;
????????
????????[eigvector?eigvalue]?=?eig(SbSw);?%最終的計算公式,就是那個求解方程eigvalue矩陣中的值都放在對角線上,表示的是特征值,eigvector矩陣是特征值對應的特征向量
????????eigvalue?=?diag(eigvalue);%將對角化的特征值轉成一個列向量
????????[~?index]?=?sort(-eigvalue);%將特征值進行排序
????????eigvalue?=?eigvalue(index);
????????eigvector?=?eigvector(:index);
????????eigvector?=?eigvector(:?1:ReducedDim);
????????for?q?=?1:size(eigvector2)
????????????eigvector(:q)?=?eigvector(:q)./norm(eigvector(:q));%這些都是提取最小(大)特征值所對應的特征向量
????????end
????????
????????%%?recognition這里是識別過程
????????train_alldata=bsxfun(@minustrain_samplesmean_all);
????????test_alldata=bsxfun(@minustest_samplesmean_all);
????????for?a=1:(fperc-fftr)*cNum
????????????test_data=test_alldata(::a);
????????????test_proj=test_data*eigvector;
????????????all_result=[];
????????????for?b=1:fftr*cNum
????????????????train_data=tra

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4537??2014-03-10?23:19??2DLDA\LDA2D_knn.asv
?????文件????????4776??2014-11-10?20:07??2DLDA\LDA2D_knn.m
?????文件?????3729559??2013-10-08?16:25??2DLDA\ORL2D_data.mat
?????文件?????1396287??2013-10-08?16:15??2DLDA\Yale2D_data.mat
?????目錄???????????0??2014-11-14?10:26??2DLDA\

評論

共有 條評論

相關資源