如何标准化 3-D 向量矩阵

问题描述 投票:0回答:1

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

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

matlab vector matrix normalization
1个回答
4
投票

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

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
是原始 3-D 向量矩阵。

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

© www.soinside.com 2019 - 2024. All rights reserved.