перевод сложной формулы Matlab - PullRequest
0 голосов
/ 09 ноября 2011

Я новичок в Matlab.Но у меня есть знания в кодировании C ++, Java и все.Но имейте в виду, что я тоже не профессионал в этом.Просто новичок.

Итак ... Я работаю в системе на основе Matlab.И я застрял на том, как писать сложные формулы в Matlab.У меня уже есть предоставленные алгоритмы, просто я не знаю, как написать это в Matlab.Эта система связана с распознаванием изображений.

* μ = 1 / MN ∑ (i = 1) ^ M▒∑ (j = 1) ^ N▒Pij * (я скопировал этопрямо из MsWord, поскольку я пока не могу публиковать изображения)

Буду очень признателен за помощь.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Мне кажется, вы просто хотите усреднить все значения в матрице P.

Чтобы сделать буквально то, что в вашей формуле, вы можете использовать

mu = 1/(size(P,1)*size(P,2)) *sum(sum(P));

Для любой матрицы P size (P, dim) возвращает свой размер по указанному размеру, т. Е. Ваш M или N для dim=1 или 2. Для матриц sum вернет вектор суммы значений каждого столбца матрицы, sum, примененный к вектору, вернет сумму всех его элементов.

Однако, то же самое может быть достигнуто легче:

mu = mean(P(:));

, где P(:) - P, рассматриваемый как один столбец. mean(P) снова вычислит среднее значение для каждого столбца P (таким образом, mean(mean(P)) - это еще один способ получить среднее значение для всех элементов P).

Редактировать : Если M и N не имеют размер P вдоль заданного измерения, т.е. если вы хотите рассмотреть только первые M строк и первые N столбцов, используйте P(1:M,1:N) для ссылки на соответствующую подматрицу.

0 голосов
/ 09 ноября 2011

Используйте для циклов для сумм и продуктов (без каламбура). Введите «help for» в командной строке для синтакс.

Используйте переменные для хранения результатов этих сумм и продуктов и, при необходимости, других отделимых подвыражений.

...