MATLABǲɎxNg䎪ǪɎȎǮǴAǎɎǑ repmat ǲsҎgĎǎǎЎǪB
ǎǎǎAΎǴǎǎf[^ǴɎepmat gǎA
ǎǎَǴˎŎɎǎAP[Vɢsǎ̎ǎَǎЎǪB

ǎǎǲArepmatgǎ̎ǎǴvǪɎMEXώǎCVSǴAbvǎǎЎǎǮB
ǮɎɎǎǎՎAǎǎ͎ǲpǲɎǎȎvǎǎЎǪB
ǎǤɎՎwv⎻ǎ󎷎玩ɤɨɎB

]ǎɎŎɎǎAP[VɎǎǎǎÎǉ
e󎠎f[^⎵ǎǴL걎ǲAXs[hǎǲɪB

Ŏp
% xNgɎ
x  = rand(M,N);
na = sqrt(sum(x.^2,2)); % norm
xa = repmultiply(x, 1./na); % = x./repmat(na,[1 N])

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

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

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

% ҎɎ
y  = rand(M,1);
xy = repmultiply(x,y); % = diag(y) * x = repmat(y,[1 M]) .* x

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

% --- Usage
% z = 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 ǎǢɎÎǎǎǴǎǎǎǎՎG[ǴɎǎ
