У меня есть матрица размером [1, 10] и другая размером [1, 50] (оба вектора - один будет транспонирован), который я хочу умножить.Я могу сделать это в MATLAB, но библиотека Clojure , которую я использую, возвращает ошибку, указывающую, что векторные фигуры не совпадают.
Вот код Clojure (не выполняется)
(def A [-0.4300 0.8205 0.3060 0.7011 0.3717 0.3790 0.6332 0.6179 0.5414 0.7277])
(m/shape A)
(def B [1 4.5239 1.0 4.54133 4.17334 1.0 2.3195 1.25481 2.57760 0.999 1.71030 1.167121 0.996 1.0 1.0 1.0 1.0 2.42060 4.53421 1.0 3.81672 2.26177 1.412147 1.13449 4.22844 1.87670 1.42931 4.13310 1.0 3.06024 1.0 0.999 1.02989 8.92018 8.90729 6.60117 2.61610 7.31420 1.0 4.23987 0.999 1.05592 5.31238 1.0 1.0 0.999 7.97549 1.6177 1.0 1.0])
(m/shape B)
(m/mmul (m/transpose A) B)
Эквивалентная операция в MATLAB:
A = [-0.4300 0.8205 0.3060 0.7011 0.3717 0.3790 0.6332 0.6179 0.5414 0.7277];
size(A)
B = [1 4.5239 1.0 4.54133 4.17334 1.0 2.3195 1.25481 2.57760 0.999 1.71030 1.167121 0.996 1.0 1.0 1.0 1.0 2.42060 4.53421 1.0 3.81672 2.26177 1.412147 1.13449 4.22844 1.87670 1.42931 4.13310 1.0 3.06024 1.0 0.999 1.02989 8.92018 8.90729 6.60117 2.61610 7.31420 1.0 4.23987 0.999 1.05592 5.31238 1.0 1.0 0.999 7.97549 1.6177 1.0 1.0];
size(B)
C = A' * B;
size(C)
Очевидно, что операция математически возможна - она должна возвращать матрицу [10, 50] ... есть ли ошибка в способе, которым я реализовал вычислениеили это ошибка?