Próbuję napisać mnożenia macierzy dla MySQL i jestem trochę zakleszczony:MySQL mnożenia macierzy
zasadzie moi matryce są przechowywane w formacie
[wiersz #, kolumna #, matrixID, wartość], a więc na przykład matrycy [3 x 2] wyglądałby:
[row#, column#, matrixID, value]
1 1 mat01 1
1 2 mat01 2
1 3 mat01 3
2 1 mat01 4
2 2 mat01 5
2 3 mat01 6
równoważne [[1 2 3], [4 5 6]]
następujących nie obliczanie pojedynczego elementu macierzy1 * macierzy2 dobrze :
SELECT SUM(row1.`val` * col2.`val`)
FROM matValues row1
INNER JOIN `matValues` col2
WHERE row1.`row` = 1 AND row1.`mID`='matrix1' AND
col2.`mID`='matrix2' AND col2.`col` = 1 AND row1.col = col2.row
Zawijanie tego do funkcji, a następnie za pomocą innej funkcji do iteracji numerów wierszy i kolumn może działać, ale mam problemy z generowaniem tego zestawu liczb i iteracji nad nimi za pomocą SQL. Wszelkie porady/sugestie są mile widziane
Czy naprawdę masz pytanie "Jak wygenerować sekwencję liczb w MySQL"? – raina77ow
MySQL to system zarządzania bazą danych, a nie silnik algebry liniowej. Powinieneś czytać zawartość do bardziej odpowiedniego narzędzia (takiego jak aplikacja Java lub C++) wykonującego tam manipulację matrycą i, jeśli to konieczne, umieszczać wyniki z powrotem w bazie danych. – andand
ofc, najprostszym rozwiązaniem jest używanie Javy lub C++ (lub cokolwiek innego), jednak mam do czynienia z bardzo dużymi macierzami (w zasadzie wystarczająco dużymi, że dopasowanie ich do pamięci nie wchodzi w rachubę) i sprawia, że manipulacja matrycą w rozsądnej prędkości jest dość skomplikowana, ponieważ wymaga przechowywania tylko porcji w pamięci i obciążenia we/wy dla bardzo dużej liczby odczytów i zapisów wymaganych do przetwarzania macierzy. Jeśli chodzi o generowanie sekwencji numerów MySQL, jest to z pewnością jedno rozwiązanie i nie jestem świadomy, jak to zrobić, lepszym rozwiązaniem byłoby podanie pary WYBRANYCH wierszy do funkcji SQL i powrotu tabeli w wyniku. – Azolin