Почему логика diag (s) * C * diag (s); в матлабе? - PullRequest
0 голосов
/ 06 октября 2011

В Matlab это, кажется, скорее вопрос алгоритма, но может ли кто-нибудь объяснить логику Sigma_0=diag(s)*C*diag(s)?

s=.07*ones(N,1);
Sigma_0=diag(s)*C*diag(s);

Спасибо

1 Ответ

3 голосов
/ 06 октября 2011

Масштабирует все столбцы на 0,07, а затем масштабирует строки на 0,07.

Однако это точно так же, как:

  Sigma_0=C * 0.07^2;

Если s было чем-то иным, чемскалярное умножение на вектор единиц, это будет масштабировать строки и столбцы, каждый на несколько чисел.Например, если C было 4x4, а если s=[1 2 3 4], то diag(s)*C будет масштабировать первую строку на 1, вторую - на 2 и т. Д. Аналогично, C*diag(s) будет масштабировать первый столбец на 1, второй столбец на2 и т. Д.

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