MATLAB代码
clear_all;
M=rand(5,5)*100;
% 假设M是待转换的矩阵
a = min(M(:));
b = max(M(:));
% 将M映射到[0, 255]
M_mapped = functionA(M, a, b);
M_mapped_floor=floor(M_mapped);
% 将M_mapped恢复到原始范围
M_original = functionB(M_mapped_floor, a, b);
disp(M);
disp(M_mapped);
disp(M_mapped_floor);
disp(M_original);
disp(abs(M-M_original));
function Y = functionA(X, a, b)
% 函数A: 将矩阵中的值映射到[0, 255]
% X是输入矩阵
% a和b分别是原矩阵中的最小值和最大值
Y = (X - a) * 255 / (b - a);
end
function X = functionB(Y, a, b)
% 函数B: 将[0, 255]范围内的值映射回原值
% Y是通过函数A映射后得到的矩阵
% a和b分别是原矩阵中的最小值和最大值
X = Y * (b - a) / 255 + a;
end