Существует ли путь в Октаве, чтобы вычислить и сохранить только диагональ матричного произведения?
В основном как выполнение: vector = diag(A*B);
Я не забочусь ни об одном из значений A*B
кроме тех, которые на диагонали. Матричные размеры вокруг 80k x 12
и 12 x 80k
, таким образом, даже если я не заботился о скорости/дополнительной памяти о нем, просто привычка помещается в RAM.
Странный, так как Октава является пакетом для огромных наборов данных, и диагонали очень важны, таким образом, это должно быть возможно.
Первый элемент диагонали - это скалярное произведение первой строки A на первый столбец B. Второй элемент диагонали - это скалярное произведение второй строки A на второй столбец B.
Другими словами:
vector = sum(A.*B',2);
Вот как это можно сделать в MATLAB (вероятно, аналогично синтаксису Octave):
vector = sum(A.*B',2);
Это вычислит только результирующую диагональ операции A*B
как вектор-столбец vector
.
AES сильно отличается, AES создает SPN, сеть подстановок. Он генерирует s-боксы (поля подстановки) на основе полиномиальных функций, сгенерированных во время шифрования. Он выполняет его через 10-14 раундов подстановки на уровне байтов и перестановки на уровне битов, битовая длина ключа определяет количество раундов и круглых ключей.
RSA основана на факторах больших простых чисел, которые чрезвычайно трудно вычислить, но довольно легко первоначально зашифровать.
-121--1541464-Перетасовка Фишера-Йейтса или как она также известна как перетасовка Кнута.
-121--2338698-На самом деле я думаю, что это скалярное произведение первой строки A с первым столбцом B... второй диагональный элемент - скалярное произведение второго ряда и второго столбца... и т.д.