Что означает (Theta1 (:, 2: end). ^ 2,2) в этом коде? - PullRequest
0 голосов
/ 08 января 2019

Что означает (Theta2(:, 2:end).^2, 2)?

p = sum(sum(Theta1(:, 2:end).^2, 2))+sum(sum(Theta2(:, 2:end).^2, 2)); 

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Допустим, у нас есть матрица theta2 размера (3,3), и мы хотим вычислить указанное выше выражение, которое является суммой (сумма (Theta2 (:, 2: end). ^ 2, 2) ). Прежде всего давайте разберем выражение:

  1. theta2 (:, 2: end). ^ 2 -> выбрать все строки (которые обозначены ':' вместо любого номера строки), но выбрать столбцы, большие чем равные 2, и заключить в квадрат каждый член.

2.сумма (theta2 (:, 2: конец). ^ 2,2) -> сумма столбцов квадратов в разумных пределах.

3.sum (sum (theta2 (:, 2: end). ^ 2,2)) -> Теперь суммируйте итоговую сумму из суммы, полученной на втором шаге.

0 голосов
/ 08 января 2019

Давайте начнем с самых внутренних скобок. Во-первых, Theta1(:, 2:end).^2 поддерживает все столбцы Theta1, кроме первого, затем возводит его в квадрат. Позвольте обозначить результат с mem1. Затем после sum(mem1,2) вычисляется сумма столбца , выход которого является суммой всех столбцов mem1 и, следовательно, является самим столбцом. (sum(mem1,1) или sum(mem1) вычисляет сумму строки ). Затем sum(sum(mem1,2)) вычисляет суммирование элементов sum(mem1,2), которое в итоге дает сумму всех элементов Theta1 в квадрате. То же самое верно для Theta2.

P.S. Вы можете просто использовать p = sum(sum(Theta1(:, 2:end).^2+Theta2(:, 2:end).^2));, так как результат тот же

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...