Kapitola 14
MATRIX – Bloky pro maticové a vektorové operace

Poznámky k imlementaci: První prvek matice má index(0,0), první prvek vektoru index 0.

Vektor není samostatný objekt, ale matice s jedním sloupcem. Může být i matice s jedním řádkem, které se říká řádkový vektor. Pokud se někdy v systému REXYGENvyžaduje vektor, myslí se tím sloupcový (tj. matice s jedním sloupcem).

Matice jsou mezi bloky předávány odkazem. V rámci nějakého bloku (nejčastěji MX_MAT nebo MX_VEC) se alokuje paměť pro celou matici a pak se jen předává jedno číslo, které znamená adresu této paměti. To znamená, že všechny bloky, které si matici předávají pořád pracují s jednou kopií a vzájemně si matici přepisují. Pokud je potřeba vytvořit kopii matice, je potřeba použít další blok MX_MAT a data zkopírovat (např. blokem MB_DCOPY ).

Některé bloky pracující s vektorem (např. MB_DCPY, RTOV, VTOR) nekontrolují přesné rozměry (takže např. matici 10x10 chápou jako 100 prvkový vektor). Pro tento případ je důležité vědět, že se hodnoty ukládají po sloupcích (nejdříve je v paměti první sloupec, pak druhý sloupec, atd.). Tyto bloky pak nepracují správně s odkazy na výřez matice získaný blokem MX_DSAREF.

Většina bloků má odkaz/referenci na matici jak na vstupu tak na výstupu. Obojí je odkaz na stejnou matici, takže je jedno, kam další blok připojíme. Protože ale pořadí spouštění bloků se řídí tokem signálu, připojením na výstup jiného bloku definujeme pořadí spouštění bloků a tím i pořadí vykonávání maticových operací.

 CNA – Konstantní pole (vektor/matice)
 MB_DASUM – Součet absolutních hodnot
 MB_DAXPY – Provádí y := a*x + y pro vektory x,y
 MB_DCOPY – Kopíruje vektor x do vektoru y
 MB_DDOT – Skalární součin dvou vektorů
 MB_DGEMM – Provádí C := alpha*op(A)*op(B) + beta*C, where op(X) = X or op(X) = X^T
 MB_DGEMV – Provádí y := alpha*A*x + beta*y or y := alpha*A^T*x + beta*y
 MB_DGER – Provádí A := alpha*x*y^T + A
 MB_DNRM2 – Eukleidovská norma vektoru
 MB_DROT – Rovinná rotace vektoru
 MB_DSCAL – Násobení vektoru konstantou
 MB_DSWAP – Záměna dvou vektorů
 MB_DTRMM – Provádí B := alpha*op(A)*B or B := alpha*B*op(A), where op(X) = X or op(X) = X^T pro trojúhelníkovou matici A
 MB_DTRMV – Provádí x := A*x or x := A^T*x pro trojúhelníkovou matici A
 MB_DTRSV – Řeší jednu ze soustav rovnic A*x = B nebo A^T*x = B pro trojúhelníkovou matici A
 ML_DGEBAK – Zpětná transformace k ML_DGEBAL levých nebo pravých vlastních vektorů
 ML_DGEBAL – Vyvážení obecné reálné matice
 ML_DGEBRD – Redukce obedné reálné matice do bidiagonální formy pomocí ortogonální transformace
 ML_DGECON – Odhad převrácené hodnoty čísla podmíněnosti obecné reálné matice
 ML_DGEES – Výpočet vlastních čísel, Schurovy formy a volitelně matice Schurových vektorů
 ML_DGEEV – Výpočet vlastních čísel a volitelně levých a/nebo pravých vlastních vektorů
 ML_DGEHRD – Redukce reálné obecné matice A na horní Hessenbergovu formu
 ML_DGELQF – Výpočet LQ factorizace reálné matice A s rozměry M x N
 ML_DGELSD – Výpočet řešení s minmální normou reálné lineární úlohy nejmenších čtverců
 ML_DGEQRF – Výpočet QR factorizace reálné matice A s rozměry M x N
 ML_DGESDD – Výpočet singulární dekompozice (SVD) reálné matice A s rozměry M x N
 ML_DLACPY – Kopíruje celou nebo část matice do jiné matice
 ML_DLANGE – Výpočet některé z maticových norem obecné matice
 ML_DLASET – Inicializuje mimodiagonální a diagonální prvky matice na zadané hodnoty
 ML_DTRSYL – Řešení reálné Sylvesterovy rovnice pro kvazitrojúhelníkové matice A a B
 MX_AT – Hodnota prvku matice/vektoru
 MX_ATSET – Nastavení hodnoty prvku matice/vektoru
 MX_CNADD – Přičte skalár ke každému prvku matice/vektoru
 MX_CNMUL – Vynásobí matici/vektor skalárem
 MX_CTODPA – Discretizace spojitého modelu (A,B) do (Ad,Bd) s využitím Padéových aproximací
 MX_DIM – Dimenze matice/vektoru
 MX_DIMSET – Nastavení dimenze matice/vektoru
 MX_DSAGET – Uložení submatice A do matice B
 MX_DSAREF – Nastavení odkazu na submatici A do matice B
 MX_DSASET – Uložení matice A do submatice v B
 MX_DTRNSP – Transpozice obecné matice: B := alpha*A^T
 MX_DTRNSQ – Transpozice čtvercové matice na místě: A := alpha*A^T
 MX_FILL – Vyplnění reálné matice/vektoru
 MX_MAT – Blok pro uložení dat matice
 MX_RAND – Náhodně vygerenovaná matice nebo vektor
 MX_REFCOPY – Kopírování vstupních odkazů na matice A a B do jejich výstupních odkazů
 MX_SLFS – Ukládání a čtení matice/vektoru do souboru nebo textového retězce
 MX_VEC – Blok pro uložení dat vektoru
 MX_WRITE – Výpis matice/vektoru do konzole/systemého logu
 RTOV – Vektorový multiplexer
 SWVMR – Přepínač vektorového/maticového/odkazovacího signálu
 VTOR – Vektorový demultiplexer

2023 © REX Controls s.r.o., www.rexygen.com