MATLABǤϷ׻٥ȥ벽뤿ˡФ repmat ǹ礷ޤ
礭ʥǡФrepmat Ȥ硢
٤˥ꥢ󤬹Ԥ®٤ޤ

ǡrepmatȤ鷺˷׻MEXؿCVS˥åפޤ
ƤξϡѤǤȻפޤ
ܤϥإפȰʲ򸫤Ƥ

;ʬʥꥢ򤷤ʤΤ
̥ǡ򰷤ͭǡ׻ԡɤܰʾ®Ǥ


% ٥ȥ
x  = rand(M,N);
na = sqrt(sum(x.^2,2)); % norm
xa = vb_repmultiply(x, 1./na); % = x./repmat(na,[1 N])

nb = sqrt(sum(x.^2,1)); % norm
xb = vb_repmultiply(x, 1./nb); % = x./repmat(nb,[M 1])

% Х
ma = mean(x,2);
xa = vb_repadd(x, -ma); % = x - repmat(ma,[1 N])

mb = mean(x,1);
xb = vb_repadd(x, -mb); % = x - repmat(mb,[M 1])

% гѹȤι
y  = rand(M,1);
xy = vb_repmultiply(x,y); % = diag(y) * x = repmat(y,[1 M]) .* x

z  = rand(1,N);
xy = vb_repmultiply(x,z); % = x * diag(z) = repmat(z,[N 1]) .* x

% --- Usage
% z = vb_repmultiply(x,y)
% x : M x N
% z : M x N
%
% case  y : 1 x N
%  z = x .* repmat(y, [M 1])
%    = x * diag(y)
%  z(m,n) = x(m,n) * y(n)
%
% case  y : M x 1
%  z = x .* repmat(y, [1 N])
%    = diag(y) * x
%  z(m,n) = x(m,n) * y(m)
%
% case  y : 1 x 1
%  z = x * y
%  z(m,n) = x(m,n) * y

y μΤɤξˤбʤϥ顼ˤʤ
