求MATLAB程序注释-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 软件培训>>

Matlab软件培训

>>

求MATLAB程序注释

求MATLAB程序注释

发布:perfect-秋 | 分类:Matlab软件培训

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

获取电子版《CDA一级教材》

完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。

完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。

哪位大侠可以帮帮忙把下面这段MATLAB的注释写下来哈,本人初学matlab,也可以发到邮箱哈xuxinanyin@163.com,感激不尽哈!(每句哈!)%function[eigvector,eigvalue,Y]=KPCA(X,r,opts)%KernelPrincipalComponentAna ...
免费学术公开课,扫码加入


哪位大侠可以帮帮忙把下面这段MATLAB的注释写下来哈,本人初学matlab,也可以发到邮箱哈xuxinanyin@163.com,感激不尽哈!(每句哈!)
%function [eigvector, eigvalue,Y] = KPCA(X,r,opts)
% Kernel Principal Component Analysis
% Written by Wei Yang
% [eigvector, eigvalue,Y] = KPCA(X,r,opts)
% Input:
% X: d*N data matrix;Each column vector of X is a sample vector.
% r: Dimensionality of reduced space (default: d)
% opts: Struct value in Matlab. The fields in options that can be set:
% KernelType-Choices are:
% 'Gaussian' - exp{-gamma(|x-y|^2)}
% 'Polynomial' - (x'*y)^d
% 'PolyPlus' - (x'*y+1)^d
% gamma -parameter for Gaussian kernel
% d -parameter for polynomial kernel
%
% Output:
% eigvector: N*r matrix;Each column is an embedding function, for a new
% data point (column vector) x,y = eigvector'*K(x,:)'
% will be the embedding result of x.
% K(x,:) = [K(x1,x),K(x2,x),...K(xN,x)]
% eigvalue: The sorted eigvalue of KPCA eigen-problem.
% Y : Data matrix after the nonlinear transform
if nargin<1
error('Not enough input arguments.')
end
[d,N]=size(X);
if nargin<2
r=d;
end
%% Ensure r is not bigger than d
if r>d
r=d;
end;
% Construct the Kernel matrix K
K =ConstructKernelMatrix(X,[],opts);
% Centering kernel matrix
One_N=ones(N)./N;
Kc = K - One_N*K - K*One_N + One_N*K*One_N;
clear One_N;
% Solve the eigenvalue problem N*lamda*alpha = K*alpha
if N>1000 && r
% using eigs to speed up!
opts.disp=0;
[eigvector, eigvalue] = eigs(Kc,r,'la',opts);
eigvalue = diag(eigvalue);
else
[eigvector, eigvalue] = eig(Kc);
eigvalue = diag(eigvalue);
[junk, index] = sort(-eigvalue);
eigvalue = eigvalue(index);
eigvector = eigvector(:,index);
end
if r < length(eigvalue)
eigvalue = eigvalue(1:r);
eigvector = eigvector(:, 1:r);
end
% Only reserve the eigenvector with nonzero eigenvalues
maxEigValue = max(abs(eigvalue));
eigIdx = find(abs(eigvalue)/maxEigValue < 1e-6);
eigvalue (eigIdx) = [];
eigvector (:,eigIdx) = [];
% Normalizing eigenvector
for i=1:length(eigvalue)
eigvector(:,i)=eigvector(:,i)/sqrt(eigvalue(i));
end;
if nargout >= 3
% Projecting the data in lower dimensions
Y = eigvector'*K;
end
%function K=ConstructKernelMatrix(X,Y,opts)
% function K=ConstructKernelMatrix(X,Y,opts)
% Usage:
% opts.KernelType='Gaussian';
% K = ConstructKernelMatrix(X,[],opts)
% K = ConstructKernelMatrix(X,Y,opts)
%
% Written by Wei Yang
%
% Input:
% X: d*N data matrix;Each column vector of X is a sample vector.
% Y: d*M data matrix;Each column vector of Y is a sample vector.
% opts: Struct value in Matlab. The fields in options that can be set:
% KernelType-Choices are:
% 'Gaussian' - exp{-gamma(|x-y|^2)}
% 'Polynomial' - (x'*y)^d
% 'PolyPlus' - (x'*y+1)^d
% gamma -parameter for Gaussian kernel
% d -parameter for polynomial kernel
% Output:
% K N*N or N*M matrix
if nargin<1
error('Not enough input arguments.')
end
if (~exist('opts','var'))
opts = [];
else
if ~isstruct(opts)
error('parameter error!');
end
end
N=size(X,2);
if isempty(Y)
K=zeros(N,N);
else
M=size(Y,2);
if size(X,1)~=size(Y,1)
error('Matrixes X and Y should have the same row dimensionality!');
end;
K=zeros(N,M);
end;
%=================================================
if ~isfield(opts,'KernelType')
opts.KernelType = 'Gaussian';
end
switch lower(opts.KernelType)
case {lower('Gaussian')} %exp{-gamma(|x-y|^2)}
if ~isfield(opts,'gamma')
opts.gamma = 0.5;
end
case {lower('Polynomial')} % (x'*y)^d
if ~isfield(opts,'d')
opts.d = 1;
end
case {lower('PolyPlus')} % (x'*y+1)^d
if ~isfield(opts,'d')
opts.d = 1;
end
otherwise
error('KernelType does not exist!');
end
switch lower(opts.KernelType)
case {lower('Gaussian')}
if isempty(Y)
for i=1:N
for j=i:N
dist = sum(((X(:,i) - X(:,j)).^2));
temp=exp(-opts.gamma*dist);
K(i,j)=temp;
if i~=j
K(j,i)=temp;
end;
end
end
else
for i=1:N
for j=1:M
dist = sum(((X(:,i) - Y(:,j)).^2));
K(i,j)=exp(-opts.gamma*dist);
end
end
end
case {lower('Polynomial')}
if isempty(Y)
for i=1:N
for j=i:N
temp=(X(:,i)'*X(:,j))^opts.d;
K(i,j)=temp;
if i~=j
K(j,i)=temp;
end;
end
end
else
for i=1:N
for j=1:M
K(i,j)=(X(:,i)'*Y(:,j))^opts.d;
end
end
end
case {lower('PolyPlus')}
if isempty(Y)
for i=1:N
for j=i:N
temp=(X(:,i)'*X(:,j)+1)^opts.d;
K(i,j)=temp;
if i~=j
K(j,i)=temp;
end;
end
else
else
for i=1:N
for j=1:M
K(i,j)=(X(:,i)'*Y(:,j)+1)^opts.d;
end
end
end
otherwise
error('KernelType does not exist!');
end
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-1178570-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
数据分析师 人大经济论坛 大学 专业 手机版
联系客服
值班时间:工作日(9:00--18:00)