Wpis z mikrobloga

Mirko, mam problem z programem w Matlabie. Opis problemu:
Mam tablice 200x200 typu bool, ale ze względu na dalsze obliczenia muszę zmienić wszystkie '0' na '-1'. Z tego powodu muszę zmienić typ danych z bool na coś innego i zmieniam ten typ na double.
A zmieniam na double ze względu na fakt, że Matlab nie ogarnia mnożenia tablic będących intem:

MTIMES is not fully supported for integer classes. At least one input must be scalar. To compute elementwise TIMES, use TIMES (.*) instead.

Jednak ja muszę wykonać mnożenie tych tablic w stylu D* ((D' *D)^-1) *D', co prowadzi do powstania ogromnych tablic typu double, które zabierają masę miejsca i zacinają cały komputer. Przy rozmiarze 250x250 sięgają już rozmiarów ponad 20GB i Matlab tego nawet nie próbuje liczyć.
Co robić? Da się to jakoś jednak zrobić na małych intach?

#programowanie #matlab #pytanie #pytaniedoeksperta
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Gumaa: Bez kodu nic nie potrafią nic więcej powiedzieć ( ͡° ͜ʖ ͡°) Also dlaczego double, a nie int?
Obliczenia na liczbach zmiennoprzecinkowych są o wiele mniej wydajne niż na liczbach całkowitych.
EDIT: W sumie to już sam nie wiem co Ty tam masz, bo najpierw piszesz double, potem int...
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
Bez kodu nic nie potrafią nic więcej powiedzieć ( ͡° ͜ʖ ͡°) Also dlaczego double, a nie int?

EDIT: W sumie to już sam nie wiem co Ty tam masz, bo najpierw piszesz double, potem int...

@Zelber: no przecież napisałem, że zmieniam tablicę na double, bo Matlab nie ogarnia mnożenia jeżeli tablica jest typu int i wywala wtedy podany błąd ( ͡° ʖ̯ ͡
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@selenita66: nie da się, bo potem całą tablicę i tak muszę użyć w dalszych obliczeniach.
Po prostu potrzebuję sposobu zmienienia typu danych z zachowaniem możliwości wykonania mnożenia macierzy. Double to straszne marnotrawstwo.
  • Odpowiedz