如何归一化三维向量矩阵

时间:2013-06-11 15:55:18

标签: matlab vector matrix normalization

我有一个512x512x3矩阵,可以存储512x512的维度向量。标准化所有这些向量的最佳方法是什么,以便我的结果是长度等于1的512x512向量?

目前我使用for循环,但我不认为这是MATLAB中最好的方法。

1 个答案:

答案 0 :(得分:4)

如果向量是Euclidean,则每个向量的长度是其坐标平方和的平方根。要单独规范化每个向量以使其具有单位长度,您需要将其坐标除以其范数。为此,您可以使用bsxfun

norm_A = sqrt(sum(A .^ 2, 3)_;   %// Calculate Euclidean length
norm_A(norm_A < eps) == 1;       %// Avoid division by zero
B = bsxfun(@rdivide, A, norm_A); %// Normalize

其中A是您原来的三维矢量矩阵。

编辑:根据Shai的评论,添加了一个修复程序,以避免对于空向量可能被零除。