在matlab中规范化矩阵

时间:2011-11-13 11:56:20

标签: matlab matrix normalize

我有一个以双打表示的rgb图像矩阵(高度*宽度* 3)。 在对矩阵进行一些操作之后,一些值变为2,然后是1或更小,然后是0。 我需要将那些valuse归一化为1和0。 感谢。

2 个答案:

答案 0 :(得分:6)

好吧,只需按条件使用索引即可。假设您的矩阵称为M. 如果您只想将值设置为大于1到1且小于0,请使用:

M(M > 1) = 1;
M(M < 0) = 0;

但是,如果要按比例将所有值标准化为区间[0; 1],那么你必须做类似的事情:

mmin = min(M(:));
mmax = max(M(:));
M = (M-mmin) ./ (mmax-mmin); % first subtract mmin to have [0; (mmax-mmin)], then normalize by highest value

当矩阵M已经在[0;区间]时,你必须考虑这种情况。 1]并且不需要归一化。

答案 1 :(得分:0)

如果您只想查看可以使用的图像

imagesc(M); 

它负责范围本身。

如果您想手动更改值并完全控制它,

M = M ./ max(M(:));
如果你只有正值,那么

就会成功。 要获得完整的对比度图像,您可能需要:

m = m - min(m(:));
m = m ./ max(m(:));