mnożenie macierzy

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
onaa87
Posty: 4
Rejestracja: 01 kwie 2009 14:15
Kontakt:

mnożenie macierzy

Post autor: onaa87 »

Mam na zadanie do zrobienie program który mnoży manierze bez użycia funkcji LabVIEW (AXB) a następnie sprawdza wyniku funkcją(AXB). Za bardzo nie wiem jak mogłabym się za to zabrać. Mógłby mi ktoś pomóc
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: mnożenie macierzy

Post autor: jogurt_owocowy »

Witaj na forum,
Najlepiej zabrać się za to definiując wymagania funkcjonalne odnośnie tego programu, a więc np.:
  1. Dwie macierze wejściowe (X i Y) reprezentowane są jako tablice 2D liczb typu double, podobnie macierz wyjściowa (Z).
  2. Jeśli liczba kolumn macierzy X jest różna od ilości wierszy macierzy Y, program sygnalizuje błąd.
To wystarczy, aby zacząć.
Otwórz nowego VIaja i spróbuj na jego panelu utworzyć wejścia i wyjścia Twojego programu. Tablicę tworzysz w ten sposób, że do wnętrza elementu Array (zwróć uwagę na przycisk Search na palecie kontrolek) przeciągasz kontrolkę odpowiedniego typu - w Twoim przypadku Numeric Control. Powstała tablica jest jednowymiarowa, więc kliknij prawym klawiszem na indeksie tablicy (z lewej) i wybierz Add Dimension - masz już tablicę 2D. Możesz ją rozciągnąć chwytając na róg. Nazwij ją X i skopiuj aby otrzymać tablicę Y. Dodatkowo wrzuć na panel kontrolkę Boolean (Round LED) i nazwij ją błąd.
Wymaganie nr 1 jest (prawie) spełnione, czas na wymaganie nr 2. Przejdź na diagram i spróbuj za pomocą dostępnych funkcji (Array Size, Index Array, Equal?) zaświecić kontrolkę błąd, jeśli rozmiary tablic wejściowych są nieprawidłowe.
Napisz, jak się z tym uporasz (albo jak będziesz mieć jakieś problemy). Powodzenia.
PS. Tablice utworzone wg powyższego opisu są początkowo puste - mają rozmiar [0,0]. Gdy coś w nie wpiszesz, zaczynają mieć niezerowy rozmiar. Aby z powrotem przywrócić je do pierwotnej postaci, kliknij na indeksie tablicy i wybierz Data Operations -> Empty Array.
PPS. Na każdym wejściu/wyjściu każdej funkcji możesz kliknąć prawym klawiszem i utworzyć kontrolkę wybierając Create -> Control/Indicator
Ostatnio zmieniony 04 kwie 2009 15:56 przez jogurt_owocowy, łącznie zmieniany 1 raz.
onaa87
Posty: 4
Rejestracja: 01 kwie 2009 14:15
Kontakt:

mnożenie macierzy

Post autor: onaa87 »

Ok dzięki wielki :)
Udało mi się zrobić tyle. Za bardzo nie co powinno się umieścić w pętlach for i jak wykorzystać indeksowanie aby program działał poprawnie
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: mnożenie macierzy

Post autor: jogurt_owocowy »

Dobrze.
Ważna rzecz: Aby macierze A i B mogły być pomnożone, wystarczy żeby było spełnione, że macierz A ma tyle kolumn, co macierz B wierszy. NIE MUSI być jednocześnie spełnione, że macierz A ma tyle wierszy, co macierz B kolumn.
Dwie zagnieżdżone pętle for to dobry trop, tak samo jak transpozycja macierzy, trzeba to tylko doszlifować.
Autoindeksowanie wejściowe pętli dla tablic 2D działa tak, że wewnątrz pętli z tunelu wychodzą kolejne wiersze tablicy. W mnożeniu macierzy potrzebujesz kolejne wiersze macierzy A i kolejne kolumny macierzy B, czyli transpozycja owszem, ale macierzy B. Teraz w zewnętrznej pętli włącz autoindeksowanie dla macierzy A i wyłącz dla B, a w wewnętrznej na odwrót (prawy klawisz myszy na tunelu Enable/Disable Autoindexing). W ten sposób wewnątrz wewnętrznej pętli masz do dyspozycji kolejny wiersz macierzy A i kolejną kolumnę B. Pozostaje Ci pomnożenie ich i zsumowanie iloczynów: Add Array Elements. Najlepsze jest to, że możesz wyjście tej funkcji wyciągnąć po prostu poza obydwie pętle i podłączyć wprost do tablicy wyjściowej - autoindeksowanie na wyjściu w pełni załatwia sprawę i nie potrzebujesz rejestrów przesuwnych.
Jeszcze tylko uzależnij wykonanie się tego mnożenia od poprawności rozmiarów tablic wejściowych (struktura Case), bo jak mają złe rozmiary to nie ma co mnożyć, tylko wyrzucić na wyjście błąd i pustą macierz i gotowe.
Pozdrawiam
Ostatnio zmieniony 04 kwie 2009 19:31 przez jogurt_owocowy, łącznie zmieniany 2 razy.
onaa87
Posty: 4
Rejestracja: 01 kwie 2009 14:15
Kontakt:

mnożenie macierzy

Post autor: onaa87 »

Działa idealnie.
Bardzo dziękuje za pomoc!!
Pozdrawiam
ODPOWIEDZ