Od rana z supportem Mathworks na telefonie. Problem dotyczy wersji 2019b (nowszych jeszcze nie sprawdzałem), 2017b działa OK. Mamy sobie dwie macierze.
a = [1, -8.392077756813356, 31.320231244770135, -68.227489240094530, 95.601443589819910, -89.357015966890490, 55.711712360873710, -22.341815453118137, 5.229278595243435, -0.544267372579095] b = [1,1,1,1,1,1,1,1,1,1]
No i wykonujemy operacje:
c(1) = a*b(:) c(2) = sum(a.*b) W 2017b jest OK, w 2019b mamy dwa różne wyniki. c(1) = 1.211586386773433e-09 c(2) = 1.211586164728828e-09
@Zendemion: Automatyczne testy konwersji wyników z jednego softu do drugiego. Ten syntax a*b(:) jest uzywany przy funcji butter wbudowanej w matlaba. Wiec niech to naprawią. @moonlisa: == c(1).
@motoinzyniere: Daj znać jak coś wymyślą, bo mam z tego bekę xD
Nie wiem oczywiście co się zmieniło w kodzie Matlaba, ale przetestowałem to sobie na pythonie. Jest różnica przy przechowywaniu danych jako double a long double. Podejrzewam, że tutaj jest grane coś podobnego, gdzie wkrada się błąd precyzji liczb zmiennoprzecinkowych do tablicy b z jedynkami, a pewnie też i tablicy a. Po drodze pewnie są różne konwersje danych. Mieli
a = [1, -8.392077756813356, 31.320231244770135, -68.227489240094530, 95.601443589819910, -89.357015966890490, 55.711712360873710, -22.341815453118137, 5.229278595243435, -0.544267372579095]
b = [1,1,1,1,1,1,1,1,1,1]
No i wykonujemy operacje:
c(1) = a*b(:)c(2) = sum(a.*b)W 2017b jest OK, w 2019b mamy dwa różne wyniki.
c(1) = 1.211586386773433e-09
c(2) = 1.211586164728828e-09
#matlab #programowanie
źródło: comment_1623836051E2KKkqkAJE2sjCAUnAFN3L.jpg
Pobierz@moonlisa: == c(1).
Komentarz usunięty przez autora
@Cryptograph: Mamy dedykowane hotline do problemów.
źródło: comment_1623837105eeEfrF3CFoW4zYhfEyvn2J.jpg
Pobierza = [1, -8.392077756813356, 31.320231244770135, -68.227489240094530, 95.601443589819910, -89.357015966890490, 55.711712360873710, -22.341815453118137, 5.229278595243435, -0.544267372579095]
b =
sum(a)
ans
Nie wiem oczywiście co się zmieniło w kodzie Matlaba, ale przetestowałem to sobie na pythonie. Jest różnica przy przechowywaniu danych jako double a long double. Podejrzewam, że tutaj jest grane coś podobnego, gdzie wkrada się błąd precyzji liczb zmiennoprzecinkowych do tablicy b z jedynkami, a pewnie też i tablicy a. Po drodze pewnie są różne konwersje danych. Mieli