scale.m

来自「kmeans clustering in matlab」· M 代码 · 共 42 行

M
42
字号
function B = scale(A, a0, a1, b0, b1)%% B = scale(A, a0, a1, b0, b1); rescale A by mapping [a0,a1] -> [b0,b1].%     values below a0 are mapped to b0%     values above a1 are mapped to b1%     values between a0 and a1 are linearly mapped to the range b0, b1%%     The b arguments may be omitted in which case they default to 0 and 1%     Specifying a0 = -Inf will select minimum value in A as a0%     Specifying a1 = +Inf will select maximum value in A as a1%     It is an error if a1 < a0.  %if (nargin <= 3)   b0 = 0.0;  b1 = 1.0;end%if (isinf(a0))  a0 = min(min(A));end%if (isinf(a1))  a1 = max(max(A));end%la = (A < a0);ra = (A >= a0) & (A <= a1);ua = (A > a1);B = zeros(size(A));B(la) = b0 .* ones(sum(sum(la)),1);B(ua) = b1 .* ones(sum(sum(ua)),1);if (a1 > a0)  m = (b1 - b0) / (a1 - a0);  n = (a1 * b0 - b1 * a0) / (a1 - a0);  B(ra) = m * A(ra) + n;elseif (a1 == a0)  bb = (b0 + b1) / 2.0;  B(ra) = bb .* ones(sum(sum(ra)),1);else  error('scale: parameter a1 must be >= a0')end

⌨️ 快捷键说明

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