⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sq_dist.m

📁 高斯过程在回归和分类问题中的应用
💻 M
字号:
% sq_dist - a function to compute a matrix of all pairwise squared distances% between two sets of vectors, stored in the columns of the two matrices, a% (of size D by n) and b (of size D by m). If only a single argument is given% or the second matrix is empty, the missing matrix is taken to be identical% to the first.%% Special functionality: If an optional third matrix argument Q is given, it% must be of size n by m, and in this case a vector of the traces of the% product of Q' and the coordinatewise squared distances is returned.%% NOTE: The program code is written in the C language for efficiency and is% contained in the file sq_dist.c, and should be compiled using matlabs mex% facility. However, this file also contains a (less efficient) matlab% implementation, supplied only as a help to people unfamiliar with mex. If% the C code has been properly compiled and is avaiable, it automatically% takes precendence over the matlab code in this file.%% Usage: C = sq_dist(a, b)%    or: C = sq_dist(a)  or equiv.: C = sq_dist(a, [])%    or: c = sq_dist(a, b, Q)% where the b matrix may be empty.%% where a is of size D by n, b is of size D by m (or empty), C and Q are of% size n by m and c is of size D by 1.%% Copyright (c) 2003, 2004, 2005 and 2006 Carl Edward Rasmussen. 2006-03-09.function C = sq_dist(a, b, Q);if nargin < 1 | nargin > 3 | nargout > 1  error('Wrong number of arguments.');endif nargin == 1 | isempty(b)                   % input arguments are taken to be  b = a;                                   % identical if b is missing or emptyend [D, n] = size(a); [d, m] = size(b);if d ~= D  error('Error: column lengths must agree.');endif nargin < 3  C = zeros(n,m);  for d = 1:D    C = C + (repmat(b(d,:), n, 1) - repmat(a(d,:)', 1, m)).^2;  end  % C = repmat(sum(a.*a)',1,m)+repmat(sum(b.*b),n,1)-2*a'*b could be used to   % replace the 3 lines above; it would be faster, but numerically less stable.else  if [n m] == size(Q)    C = zeros(D,1);    for d = 1:D      C(d) = sum(sum((repmat(b(d,:), n, 1) - repmat(a(d,:)', 1, m)).^2.*Q));    end  else    error('Third argument has wrong size.');  endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -