Histogram(j, :) = Histogram(j, :)./sum(Histogram(j, :));
要移植到 C++,我知道 Histogram 是一个多维数组。这行中的“./”是什么意思?
http://www.mathworks.com/help/matlab/matlab_prog/symbol-reference.html#bsgigzp-23
最佳答案
./是用于逐元素除法的命令(.* 是乘法版本)。 MATLAB 默认是矩阵运算,所以你必须使用 ./命令告诉它按元素进行运算而不是矩阵运算(在大多数情况下,矩阵运算会失败,因为大多数时候人们想要的是元素-智慧之人)。
逐元素除法意味着将一个矩阵的第一个元素除以第二个元素的第一个元素,然后将第二个元素除以第二个元素,第三个元素除以第三个元素......直到所有都完成,返回一个相同大小的矩阵作为第一和第二。这不是矩阵运算,在矩阵运算中,您反转第二个矩阵并对两者进行矩阵乘法以返回第三个矩阵,该矩阵的大小可能与任何父矩阵相同,也可能不同。
在上面的例子中,假设 Histogram 是一个二维矩阵,element-wise 和 matrix 操作实际上是一样的,因为
sum(Histogram(j,:))
将返回单个标量值(第 j 行中元素的总和)。您引用的代码的作者可能只是默认执行了 ./命令,因为这是一种常见的 MATLAB 编程习惯。
关于c++ - 这条 Matlab 线是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26373575/