Histogram(j, :) = Histogram(j, :)./sum(Histogram(j, :));
Чтобы поместить в C++, я понимаю, что Гистограмма будет многомерным массивом. Что означает "./" в этой строке?
http://www.mathworks.com/help/matlab/matlab_prog/symbol-reference.html#bsgigzp-23
. / - это команда для элементарного разделения (. * - версия умножения). Значение по умолчанию для MATLAB - это операции с матрицами, поэтому вам нужно использовать команду. /, чтобы сказать ему, чтобы операция выполнялась как элемент, а не операция матрицы (которая в большинстве случаев будет терпеть неудачу, поскольку большую часть времени люди намереваются использовать этот элемент -Мудрый).
Элементное разделение означает разделение первого элемента одной матрицы на первый элемент второго, затем второй элемент на второй элемент, третий на третий... пока все не будет выполнено, возвращая матрицу того же размера, что и первый и второй. Это вместо операции с матрицей, где вы инвертируете вторую матрицу и выполняете матричное умножение двух, чтобы вернуть третью матрицу, которая может быть или не быть того же размера, что и любая из родительских матриц.
В приведенном выше примере, предполагая, что гистограмма является двумерной матрицей, элементарные и матричные операции на самом деле одинаковы, поскольку
sum(Histogram(j,:))
вернет одно скалярное значение (сумма элементов в строке j). Автор кода, который вы цитируете, вероятно, просто выполнил команду./по умолчанию, поскольку это обычная привычка программирования MATLAB.
sum
уменьшает размерность на единицу, что делает его отличным от других аргументов, и поскольку MATLAB не имеет неявного одноэлементного расширения, за исключением скаляров (октава имеет), он должен производить скаляр.