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

  • 大小: 7KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-07-19
  • 語言: Matlab
  • 標簽: PAC??MATLAB??

資源簡介

網上搜集到的幾份PCA代碼,全部為MATLAB語言,PCA.m為一個獨立調用的韓式,完成PCA功能。pca2D.m完成通過PCA完成2D數據的分割。其余的比較復雜,有需要的可以研究一下。

資源截圖

代碼片段和文件信息

function?varargout?=?pca(X?N?method)
%PCA?PRINCIPLE?COMPONENTS?ANALYSIS
%
%??Performing?principal?components?analysis?on?the?N1-by-N2?real-valued
%??data?matrix?X?where?N1?and?N2?are?the?number?of?features?(N1?variables)
%??and?observations?(N2?samples)?respectively.
%
%??P?=?pca(XNmethod)?returns?the?N-by-N1?matrix?P?of?basis?vectors?one
%??basis?vector?per?row?in?order?of?decreasing?corresponding?eigenvalues
%??i.e.?P*X?retains?the?first?N?principle?components.?If?N?is?not
%??specified?all?components?(N=N1)?are?kept.
%
%??Two?methods?are?available:?‘eig‘?(default)?and?‘svd‘?which?solve?the
%??problem?by?eigenvalue?decomposition?and?singular?value?decomposition
%??respectively.?‘svd‘?is?running?in?‘economy‘?mode.?If?there?are?more?
%??variables?than?samples?(N1>N2)?‘svd‘?is?recommended?for?this?code.
%
%??[P?D]?=?pca(XNmethod)?also?returns?all?eigenvalues?(normalized)?in?D
%??in?descending?order.
%
%??[P?D?Y]?=?pca(XNmethod)?further?returns?the?N-by-N2?matrix?Y?=?P*X
%??each?column?of?whom?is?the?projection?of?the?corresponding?observation
%??from?X?onto?the?basis?vectors?contained?in?P.
%
%?Siqing?Wu?<6sw21@queensu.ca>
%?Version:?1.1?Date:?2008-07-30

error(nargchk(13nargin))?%?check?the?number?of?arguments
error(nargoutchk(03nargout))

[nr?nc]?=?size(X);

if?nargin<3
????method?=?‘eig‘;?%?default?method
end
if?nargin<2
????N?=?nr;?%?keep?all?components
elseif?N??nr?||?round(N)~=N
????fprintf(‘Input?N=%g?is?not?valid;?all?components?will?be?retained.\n‘?N)
????N?=?nr;
end

X?=?X-repmat(mean(X2)[1?nc]);?%?center?data

switch?method
????case?‘eig‘
????????C?=?X*X.‘;
????????%?should?be?C/(nc-1)?for?unbiased?estimate?of?the?covariance?matix
????????%?but?won‘t?affect?P.
????????[ED]?=?eig(C);?%?D?lists?eigenvalues?from?small?to?large
????????%?rearrange?D?and?E
????????D?=?diag(D);
????????D?=?D(end:-1:1)/max(D);
????????E?=?E(:end:-1:1)‘;
????????P?=?E(1:N:);
????????
????case?‘svd‘
????????%?Instead?of?solving?X*X‘?=?E*D*E‘?solve?X?=?U*Sigma*V‘
????????%?X*X‘?=?U*Sigma*V‘*V*Sigma*U‘?=?U*Sigma^2*U‘?->?P?=?U‘;
????????[Usigma]?=?svd(X‘econ‘);?%?“economy?size“?decomposition
????????if?N?>?nc
????????????fprintf(‘SVD?->?N=%d?is?used.\n‘?nc)
????????????N?=?nc;
????????end
????????D?=?diag(sigma).^2;
????????D?=?D/max(D);
????????P?=?U(:1:N)‘;
????????
????otherwise
????????error(‘Undefined?method!‘)
end
fprintf(‘Top?%d?components?are?retained;?cumulative?eigenvalue?contribution?is?%1.2f\n‘?N?sum(D(1:N))/sum(D))

switch?nargout
????case?{01}
????????varargout?=?{P};
????case?{2}
????????varargout?=?{P?D};
????case?{3}
????????Y?=?P*X;
????????varargout?=?{P?D?Y};
end

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2748??2012-02-21?11:12??pca.m
?????文件????????1400??2012-02-21?10:57??pca2D.m
?????文件????????5211??2012-02-21?10:38??PCAexample.m
?????文件???????12236??2009-06-11?16:03??PCA_Nicolas\PCA_Nicolas.m
?????文件?????????218??2009-06-09?22:24??PCA_Nicolas\dim3_data.mat
?????文件?????????240??2009-06-09?14:05??PCA_Nicolas\dim_data.mat

評論

共有 條評論