當前位置:成語大全網 - 英語詞典 - 誰能教我怎麽做MATLAB程序?全是英文,聽不懂,也不行!

誰能教我怎麽做MATLAB程序?全是英文,聽不懂,也不行!

功能pca(路徑、列車列表、子模塊)

%

原型百分比

%函數pca(路徑、訓練列表、子數據)

%

%使用示例

% PCA(' C:/FERET _ normalized/',trainList500Imgs,200);

%

%壹般描述

%實現了標準的Turk-Pentland Eigenfaces方法。作為決賽

% result,此函數將pcaProj矩陣與所有圖像壹起保存到磁盤

%投影到由PCA找到的亞次元空間上。

%

%引用

用於識別的特征臉,認知雜誌

%神經科學,第3卷,第1號,第71-86頁

%

% M.A. Turk,A.P. Pentland,使用特征臉的人臉識別,程序

%的IEEE計算機視覺和模式識別會議,

% 3-6 6月1991,美國夏威夷毛伊島,第586-591頁

%

%

%輸入:

% path-FERET數據庫中標準化圖像的完整路徑

% trainList -用於訓練的圖像列表。名字應該是

%不帶擴展名和。將自動添加pgm

% subDim -要保留的維數(所需的子空間

%維度)。如果此參數被忽略,最大

%非零維度將被保留,即(訓練圖像的數量)- 1

%

%輸出:

%函數將生成以下輸出並保存到磁盤:

% DATA - matrix,其中每壹列都是壹個經過矢量整形的圖像

% -這個矩陣的大小是(像素數)x(圖像數),uint8

% imSpace -與數據相同,但只是訓練集中的圖像

% psi -平均臉(訓練圖像的)

% zeroMeanSpace -從imSpace中的每壹行減去平均面

% pcaEigVals -特征值

% w -低維PCA子空間

% pcaProj -投影到亞維空間的所有圖像

%

%註釋/評論

% *下列文件必須與該函數位於同壹路徑

%或Matlab路徑中的某處:

% 1.包含所有3816 FERET圖像的列表

%

% **所得子空間的每個維度都被歸壹化為單位長度

%

% ***使用Matlab 7開發

%

%

%修訂歷史記錄

% -

%

%相關功能(另請參見)

% createDistMat,feret

%

%大約

%創建時間:2005年9月3日

%上次更新:-

%修訂版:1.0

%

%作者:克雷西米爾·德拉奇

% mailto:kdelac@ieee.org

% URL:

%

%當發表壹篇論文作為使用此代碼進行的研究的結果時

%或其任何部分,請參考以下文件:

%德拉奇k,格吉奇m,格吉奇s,獨立比較研究的主成分分析,獨立成分分析和線性判別分析

FERET數據集上的%,國際成像系統與技術雜誌,

%第15卷,2006年第5期,第252-260頁

%

%如果未給出子尺寸,則n - 1尺寸為

%保留,其中n是訓練圖像的數量

如果nargin & lt三

subDim = dim-1;

結束;

顯示(“”)

加載listAll

%常數

numIm = 3816;

數據矩陣的內存分配百分比

fprintf('創建數據矩陣\n ')

tmp = imread([path char(listAll(1))'。PGM ']);

[m,n] =大小(tmp);%圖像大小-稍後也會用到!!!

DATA = uint8(零(m*n,numIm));分配的內存百分比

清除str tmp

%創建數據矩陣

對於i = 1 : numIm

im = imread ( [path char(listAll(i))'。PGM ']);

DATA(:,I)= shape(im,m*n,1);

結束;

保存數據資料;

清除im;

%創建訓練圖像空間

fprintf('創建訓練圖像空間\n ')

dim =長度(train list);

imSpace = zeros (m*n,dim);

對於i = 1 : dim

index = strmatch (trainList(i),list all);

imSpace(:,i) = DATA(:,index);

結束;

保存imSpace imSpace

清除數據;

%從訓練圖像計算平均臉

fprintf('零均值\n ')

psi = mean(double(im space '))';

保存psi psi

%零均值

zeroMeanSpace = zeros(size(im space));

對於i = 1 : dim

zeroMeanSpace(:,i) = double(imSpace(:,I))-psi;

結束;

保存zeroMeanSpace zeroMeanSpace

清除imSpace

% PCA

fprintf('PCA\n ')

l = zeroMeanSpace ' * zeroMeanSpace;%土耳其-彭特蘭詭計(零件1)

[eigVecs,EIG vals]= EIG(L);

對角線= diag(EIG vals);

[對角線,索引] = sort(對角線);

index = flip ud(index);

pcaEigVals = zeros(size(EIG vals));

對於i = 1 : size(eigVals,1)

pcaEigVals(i,i) = eigVals(index(i),index(I));

pcaEigVecs(:,i) = eigVecs(:,index(I));

結束;

pcaEigVals = diag(pcaEigVals);

pcaEigVals = pcaEigVals/(dim-1);

pcaEigVals = pcaEigVals(1:subDim);%僅保留最大的子項目

pcaEigVecs = zeroMeanSpace * pcaEigVecs;%土耳其-彭特蘭騙局(第二部分)

保存pcaEigVals pcaEigVals

單位長度標準化百分比

fprintf('正常化\n ')

對於i = 1 : dim

pcaEigVecs(:,i) = pcaEigVecs(:,i) / norm(pcaEigVecs(:,I));

結束;

%維度減少。

fprintf('創建低維子空間\n ')

w = pcaEigVecs(:,1:subDim);

保存w w

清除w;

%從所有圖像中減去平均臉

加載數據;

負載psi

zeroMeanDATA = zeros(size(DATA));

對於i = 1 : size(DATA,2)

zeroMeanDATA(:,i) = double(DATA(:,I))-psi;

結束;

清除psi

清除數據;

%將所有圖像投影到新的低維子空間(w)

fprintf('將所有圖像投影到新的低維子空間上\n ')

負載w;

pcaProj = w ' * zeroMeanDATA

清除w;

清除zeroMeanDATA

保存pcaProj pcaProj