| Metoda | Deklaracja metody | Przykład wywołania | Opis działania |
|---|---|---|---|
| Utworzenie pustej macierzy | matrix() | matrix m | Tworzona jest pusta macierz |
| Utworzenie macierzy o zadanych wymiarach | matrix(int m,int n) | matrix m(5,3) | Tworzona jest macierz o wymiarach m x n (m wierszy, n kolumn). W tym przypadku tworzona jest macierz 5x3 (5 wierszy, 3 kolumny). |
| Utworzenie macierzy o zadanym wymiarze | matrix(int m) | matrix m(3) | Tworzona jest macierz wymiarach m x m. W tym przypadku tworzona jest macierz 3x3. |
| Utworzenie macierzy z liczby | matrix(double c) | matrix m(3.12) | Tworzona jest macierz o wymiarach 1x1, z elementem równym 'c'. W tym przypadku element macierzy 1x1 ma wartość 3.12. |
| Utworzenie macierzy na podstawie napisu | matrix(const char *matrix_str) | matrix m=”1 2; 3 4” m=”1 2; \ 3 4” | Tworzona jest macierz na podstawie napisu. Elementy w wierszu oddziela się spacjami, a średnik oznacza przejście do nowego wiersza. W pierwszym przykładzie powstaje macierz o wymiarach 2x2. Tę samą macierz dzięki symbolowi kontynuacji \ można zadeklarować w dwóch wierszach i wówczas jej zapis jest zgodny z naturalnym. |
| Konwersja na liczbę całkowitą | operator int() | int(d) | Macierz o wymiarach 1x1 zamieniana jest na liczbę całkowitą. Jeśli ma inne wymiary, pojawia się komunikat błędu |
| Konwersja na liczbę rzeczywistą | operator double() | double(d) | Macierz o wymiarach 1x1 zamieniana jest na liczbę rzeczywistą. Jeśli ma inne wymiary, pojawia się komunikat błędu |
| Konwersja na wektor liczb całkowitych | vector as_vector(const matrix &m) | as_vector(d) | Jeśli macierz ‘m’ ma jeden z wymiarów równy 1 (jest wektorem), to jest zwracany wektor liczb całkowitych (vector) utworzony na jej podstawie. Jeśli ‘m’ ma inne wymiary, pojawia się komunikat błędu. Rzeczywiste wartości elementów są konwertowane na liczby całkowite. Obiekt wynikowy nie ma etykiet. |
| Wektor stałych | matrix vd(intl ,...) | vd(4, 0.2, 1.5, -3.85, 10.0) | Tworzenie wektora wierszowego o długości l, wypełnionego podanymi stałymi. W tym przypadku powstaje wektor [0.2, 1.5, -3.85, 10.0] Jako stałe należy podawać liczby rzeczywiste (musi wystąpić kropka). |
| Sekwencje liczb | matrix seq(double a,double b) seq(double a,double step,double b) matrix seq(int a,int b) matrix seq(int a,int step,int b) | seq(1,9) seq(1,2,9) | Tworzenie wektora wierszowego zawierającego sekwencję liczb od 'a' do 'b', krokiem 1 lub 'step'. W pierwszym przypadku powstaje wektor [1, 2, 3, 4, 5, 6, 7, 8, 9] W drugim przypadku powstaje wektor [1, 3, 5, 7, 9] |
| Wektory liniowe | matrix linspace(double a,double b,int n=100) | linspace(1,2,5) | Tworzenie wektora o długości n, zawierającego liczby z przedziału od 'a' do 'b'. Domyślnie długość wynosi 100. W tym przypadku powstaje wektor [1.0, 1.25, 1.5, 1.75, 2.0] |
| Macierz zerowa | matrix zeros(int m,int n) matrix zeros(int m) | zeros(5,3) zeros(5) | Tworzenie macierzy o wymiarach m x n wypełnionej zerami. Tworzenie macierzy o wymiarach m x m wypełnionej zerami. |
| Macierz jedynkowa | matrix ones(int m,int n) matrix ones(int m) | ones(5,3) ones(5) | Tworzenie macierzy o wymiarach m x n wypełnionej jedynkami. Tworzenie macierzy o wymiarach m x m wypełnionej jedynkami. |
| Macierz z rozkładu jednostajnego | matrix rand(int m,int n) matrix rand(int m) | rand(5,3) rand(5) | Tworzenie macierzy o wymiarach m x n wypełnionej liczbami z rozkładu jednostajnego z przedziału [0,1]. Tworzenie macierzy o wymiarach m x m wypełnionej liczbami z rozkładu jednostajnego z przedziału [0,1]. |
| Macierz z rozkładu normalnego | matrix randn(int m,int n) matrix randn(int m) | randn(5,3) randn(5) | Tworzenie macierzy o wymiarach m x n wypełnionej liczbami z rozkładu normalnego o parametrach (0,1). Tworzenie macierzy o wymiarach m x m wypełnionej liczbami z rozkładu normalnego o parametrach (0,1). |
| Macierz identycznościowa | matrix eye(int m,int n) matrix eye(int m) | eye(5,3) eye(5) | Tworzenie macierzy o wymiarach m x n wypełnionej zerami, a na głównej przekątnej jedynkami. Tworzenie macierzy o wymiarach m x m wypełnionej zerami, a na głównej przekątnej jedynkami. |
| Macierz diagonalna / Przekątna główna | matrix diag(const matrix &a) | m = diag(v) v = diag(m) | 1) Jeśli 'a' jest wektorem, to tworzona jest macierz kwadratowa wypełniona zerami, a na głównej przekątnej wektorem 'a'. 2) Jeśli 'a' jest macierzą, to tworzeny jest wektor na podstawie przekątnej macierzy 'a'. |
| Tworzenie na podstawie wektorów i funkcji arytmetycznej | matrix outer(const matrix &v1,const matrix &v2,char fun) | outer(c(1,2,3,4),c(1,2,3,4),'*') | Tworzona jest macierz, której elementy są wynikiem funkcji zdefiniowanej znakiem 'fun' z argumentami pochodzącymi z wektora v1 i v2. Możliwe są funkcje: +, -, *, /. Elementy obiektu wyjściowego o współrzędnych (i,j) przyjmują wartości fun(v1(i),v2(j)). W tym przypadku zwracana jest tabliczka mnożenia do 16. |
| Zerowanie | void zeros() | m.zeros() | Macierz jest zerowana. |
| Wypełnianie jedynkami | void ones() | m.ones() | Macierz jest wypełniana jedynkami. |
| Wypełnianie wartościami z rozkładu jednostajnego | void rand() | m.rand() | Macierz jest wypełniana wartościami z rozkładu jednostajnego [0,1]. |
| Wypełnianie wartościami z rozkładu normalnego | void randn() | m.randn() | Macierz jest wypełniana wartościami z rozkładu normalnego o parametrach (0,1). |
| Wypełnianie identycznościowe | void eye() | m.eye() | Macierz jest wypełniana zerami, a na głównej przekątnej jedynkami. |
| Wypełnianie wartościami testowymi | void test(double t=0.0,Text e="") | m.test() | Macierz jest wypełniana wartościami testowymi (kolejne liczby całkowite). Etykiety przyjmują standardowe nazwy (R1, R2, itd. C1, C2 itd.). Wartości mogą być przesunięte o stałą 't', a etykiety mogą mieć dołączony z przodu człon 'e'. |
| Wartość bezwzględna | matrix abs(const matrix &a) void abs() | abs(m) m.abs() | Tworzona jest macierz wypełniona wartościami bezwzględnymi elementów 'a'. Nakładana jest funkcja abs na elementy. |
| Podniesienie elementów do kwadratu | matrix sqr(const matrix &a) void sqr() | sqr(m) m.sqr() | Tworzona jest macierz wypełniona kwadratami elementów 'a'. Nakładana jest funkcja ^2 na elementy. |
| Unormowanie | matrix norm(const matrix &a) void norm() | norm(m) m.norm() | Tworzona jest macierz z unormowanymi elementami 'a'. Unormowane wartości są z przedziału [0,1]. Macierz jest normowana. |
| Minimum | matrix min(const matrix &a) | min(m) | Znajdowane jest minimum elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Maksimum | matrix max(const matrix &a) | max(m) | Znajdowane jest maksimum elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Licznik | matrix count(const matrix &a) | count(m) | Zliczane są elementy liczbowe różne od NAN każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Suma | matrix sum(const matrix &a) | sum(m) | Wyliczana jest suma elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Suma kwadratów | matrix sumsqr(const matrix &a) | sumsqr(m) | Wyliczana jest suma kwadratów elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Iloczyn | matrix prod(const matrix &a) | prod(m) | Wyliczany jest iloczyn elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Suma skumulowana | matrix cumsum(const matrix &a) | cumsum(m) | Wyliczana jest suma skumulowana elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). |
| Iloczyn skumulowany | matrix cumprod(const matrix &a) | cumprod(m) | Wyliczany jest iloczyn skumulowany elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). |
| Przeciwieństwo | void minus() | m.minus() | Elementy macierzy są zamieniane na przeciwne. |
| Wartość średnia (oczekiwana) | matrix mean(const matrix &a) | mean(m) | Obliczana jest wartość średnia elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Wariancja | matrix var(const matrix &a) | var(m) | Obliczana jest wariancja elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Odchylenie standardowe | matrix stdev(const matrix &a) | stdev(m) | Obliczane jest odchylenia standardowe elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Mediana | matrix median(const matrix &a) | median(m) | Obliczana jest mediana elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Moda | matrix mode(const matrix &a) | mode(m) | Obliczana jest moda elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). |
| Kwantyl / kwantyle | matrix quantile(const matrix &a,double c) matrix quantile(const matrix &a,const matrix &v) | quantile(m,0.5) quantile(m,c(0.25, 0.75)) | Obliczany jest kwantyl elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym). W wyniku zwracany jest wektor (lub macierz 1x1). Można wyliczyć kwantyl dla jednej wartości 'c' lub kilka kwantyli zdefiniowanych w wektorze 'v'. W pierwszym przypadku obliczany jest kwantyl 50%. W drugim przypadku obliczany są kwantyle 25% i 75%. |
| Crossproduct | matrix crossprod(const matrix &a) | crossprod(m) | Obliczana jest suma iloczynów każdej kolumny z każdą macierzy 'a'. |
| Kowariancja | matrix cov(const matrix &a) | cov(m) | Obliczana jest kowariancja każdej kolumny z każdą macierzy 'a'. |
| Korelacja | matrix cor(const matrix &a) | cor(m) | Obliczana jest korelacja każdej kolumny z każdą macierzy 'a'. |
| Histogram | matrix hist(const matrix &a) | hist(m) | Wyznaczany jest histogram dla każdej kolumny. Wynik jest macierzą z podanymi udziałami w przedziałach. |
| Podsumowanie kolumn | matrix summarise(double f(const matrix &)) | m.summarise(fun1) | Dla każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym) wyliczania jest wartość funkcji f. Funkcja f ma działać na wektorze i zwracać jedną liczbę. W wyniku zwracany jest wektor (lub macierz 1x1). |
| Podsumowanie kolumn z parametrem | matrix summarise(double f(const matrix &,double),double) | m.summarise(fun2, 3.5) | Dla każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym) wyliczania jest wartość funkcji f. Funkcja f ma działać na wektorze, posiadać dodatkowy parametr liczbowy i zwracać jedną liczbę. W wyniku zwracany jest wektor (lub macierz 1x1). |
| Minimum dwuargumentowe | matrix min(const matrix &a,const matrix &b) matrix min(const matrix &a,const double c) matrix min(const double c,const matrix &a) | min(m1,m2) min(m,20) | Minimum po pozycjach macierzy 'a' i 'b'. Minimum macierzy 'a' i stałej 'c'. |
| Maksimum dwuargumentowe | matrix max(const matrix &a,const matrix &b) matrix max(const matrix &a,const double c) max(const double c,const matrix &a) | max(m1,m2) max(m,20) | Maksimum po pozycjach macierzy 'a' i 'b'. Maksimum macierzy 'a' i stałej 'c'. |
| Kowariancja dwuargumentowa | double cov(const matrix &a,const matrix &b) | cov(m1,m2) | Kowariancja wektorów 'a' i 'b'. W wyniku zwracana jest liczba. |
| Korelacja dwuargumentowa | double cor(const matrix &a,const matrix &b) | cor(m1,m2) | Korelacja wektorów 'a' i 'b'. W wyniku zwracana jest liczba. |
| Suma warunkowa | matrix sumif(const matrix &a,const vector &v) | sumif(m,v) | Suma warunkowa elementów w kolumnach macierzy 'a'. Wektor 'v' definiuje, które wiersze brać pod uwagę przy sumowaniu. Zwracany jest wektor wierszowy. |
| Średnia warunkowa | matrix meanif(const matrix &a,const vector &v) | meanif(m,v) | Średnia warunkowa elementów w kolumnach macierzy 'a'. Wektor 'v' definiuje, które wiersze brać pod uwagę przy uśrednianiu. Zwracany jest wektor wierszowy. |
| +, -, *, / | matrix operator +(const matrix &a,const matrix &b) matrix operator +(const matrix &a,const double c) matrix operator +(const double c,const matrix &a) void operator +=(const matrix &a) void operator +=(const double c) | m1+m2 m+10.0 m1+=m2 m+=10.0 | Umożliwiają wykonywanie operacji arytmetycznych na dwóch macierzach lub macierzy i liczbie rzeczywistej. Operacje +,-,*,/ są wykonywane po pozycjach. |
| Mnożenie macierzowe | matrix mul(const matrix &a,const matrix &b) matrix mulT(const matrix &a,const matrix &b) | mul(m1,m2) mulT(m1,m2) | Mnożenie macierzowe. Mnożenie macierzowe z transpozycją. Odpowiada operacji mul(a,~b) |
| Podniesienie do kwadratu z transpozycją | matrix sqrT(const matrix &a) | sqrT(m) | Podniesienie do kwadratu z transpozycją. Odpowiada operacji mul(a,~a). |
| Podniesienie do kwadratu z transpozycją 2 | matrix sqrT2(const matrix &a) | sqrT2(m) | Podniesienie do kwadratu z transpozycją wersja 2. Odpowiada operacji mul(~a,a). |
| Iloczyn skalarny | double scmul(const matrix &a,const matrix &b) | scmul(m1,m2) | Iloczyn skalarny. |
| Kwadrat skalarny | double scsqr(const matrix &a) | scsqr(m) | Kwadrat skalarny. |
| Komutator | double comut(const matrix &a,const matrix &b) | comut(m1,m2) | Komutator. |
| Ślad | double trace(const matrix &a) | trace(m) | Ślad macierzy. |
| Sinus | matrix sin(const matrix &a) void sin() | sin(m) m.sin() | Sinus po elementach macierzy. |
| Cosinus | matrix cos(const matrix &a) void cos() | cos(m) m.cos() | Cosinus po elementach macierzy. |
| Tangens | matrix tan(const matrix &a) void tan() | tan(m) m.tan() | Tangens po elementach macierzy. |
| Sinus hiperboliczny | matrix sinh(const matrix &a) void sinh() | sinh(m) m.sinh() | Sinus hiperboliczny po elementach macierzy. |
| Cosinus hiperboliczny | matrix cosh(const matrix &a) void cosh() | cosh(m) m.cosh() | Cosinus hiperboliczny po elementach macierzy. |
| Tangens hiperboliczny | matrix tanh(const matrix &a) void tanh() | tanh(m) m.tanh() | Tangens hiperboliczny po elementach macierzy. |
| Arcus sinus | matrix asin(const matrix &a) void asin() | asin(m) m.asin() | Arcus sinus po elementach macierzy. |
| Arcus cosinus | matrix acos(const matrix &a) void acos() | acos(m) m.acos() | Arcus cosinus po elementach macierzy. |
| Arcus tangens | matrix atan(const matrix &a) void atan() | atan(m) m.atan() | Arcus tangens po elementach macierzy. |
| Eksponenta | matrix exp(const matrix &a) void exp() | exp(m) m.exp() | Eksponenta po elementach macierzy. |
| Logarytm | matrix log(const matrix &a) void log() | log(m) m.log() | Logarytm po elementach macierzy. |
| Logarytm dziesiętny | matrix log10(const matrix &a) void log10() | log10(m) m.log10() | Logarytm dziesiętny po elementach macierzy. |
| Potęga | matrix pow(const matrix &a, double d) void pow(double d) | pow(m,3.0) m.pow(3.0) | Potęga po elementach macierzy. |
| Potęga całkowita | matrix pow(const matrix &a, int d) void pow(int d) | pow(m,3) m.pow(3) | Potęga całkowita po elementach macierzy. |
| Pierwiastek | matrix sqrt(const matrix &a) void sqrt() | sqrt(m) m.sqrt() | Pierwiastek po elementach macierzy. |
| Zaokrąglenie w górę | matrix ceil(const matrix &a) void ceil() | ceil(m) m.ceil() | Zaokrąglenie w górę po elementach macierzy. |
| Zaokrąglenie w dół | matrix floor(const matrix &a) void floor() | floor(m) m.floor() | Zaokrąglenie w dół po elementach macierzy. |
| Zaprzeczenie | matrix operator !(const matrix &a) | !m | Zaprzeczenie elementów macierzy. Zera zamieniane są na jedynki, inne wartości na zera. |
| Koniunkcja | matrix operator &&(const matrix &a,const matrix &b) | m1&&m2 | Koniunkcja po elementach macierzy 'a' i 'b' |
| Alternatywa | matrix operator ||(const matrix &a,const matrix &b) | m1||m2 | Alternatywa po elementach macierzy 'a' i 'b' |
| Błąd:510 | matrix operator ==(const matrix &a,const matrix &b) itd. | m1 == m2 m1 < m2 | Operatory porównania umożliwiają porównanie macierzy 'a' i 'b' po pozycjach. Macierze nie muszą być wektorami, jak to jest w przypadku operatorów dziedziczonych z obiektu data. |
| Projekcja | matrix proj(const matrix &a,const matrix &b) | proj(m1,m2) | Projekcja 'a' na 'b' |
| Norma | double norm2(const matrix &a) | norm2(m) | Norma w przestrzeni R2. |
| Ortonormalizacja | void orthonorm() | m.orthonorm() | Ortogonalizacja Grama-Schmidta z normalizacją |
| Dekompozycja QR | void QR_decomp(const matrix &a,matrix &Q,matrix &R) | QR_decomp(m,Q,R) | Dekompozycja macierzy 'a' na macierz ortogonalną Q i trójkątną R |
| Dekompozycja LU | void LU_decomp(const matrix &a,matrix &LU,matrix &pivot,int &pivsign) | LU_decomp(m,LU,pivot,pivsign) | Dekompozycja macierzy 'a' na dwie macierze trójkątne L i U (dolną i górną). W wyniku zwracane jest złożenie LU, macierz przestawień 'pivot' i znak przestawień 'pivsign'. |
| Wyznacznik | double det(const matrix &a) | det(m) | Wyznacznik macierzy. |
| Rozwiązywanie układu równań | matrix lineqns(const matrix &a,const matrix &b,LinearMethod met=GAUSS) | lineqns(m,v) | Zwraca rozwiązanie układu równań liniowych danego macierzą 'a' i kolumną 'b'. Za pomocą parametru 'met' można wybrać metodę {GAUSS, QR_DECOMP, LU_DECOMP}. Domyślnie jest stosowana metoda eliminacji Gaussa. |
| Macierz odwrotna | matrix inv(const matrix &a,LinearMethod met=LU_DECOMP) | inv(m) | Macierz odwrotna. Za pomocą parametru 'met' można wybrać metodę {GAUSS, QR_DECOMP, LU_DECOMP}. Domyślnie jest stosowana dekompozycja LU. |
| Sweeping | void linreg_sweep(int k1,int k2) | m.linreg_sweep(1,10) | Sweeping macierzy dla kolumn od k1 do k2. |
| Regresja liniowa | matrix linreg(const matrix &a,const matrix &b) | linreg(m,v) | Regresja liniowa dla zmiennych objaśniających 'a' i zmiennej objaśnianej 'b'. |
| Sweeping warunkowy | void linreg_sweep_c(int k1,int k2,const matrix &cond,int dep) | m.linreg_sweep_c(1,10,v,10) | Sweeping macierzy dla kolumn od k1 do k2, wskazanych przez wektor zero-jedynkowy 'cond'. Parametr 'dep' określa numer zmienne objaśnianej. |
| Regresja liniowa warunkowa | matrix linreg_c(const matrix &cross,const matrix &cond,int dep) | linreg_c(iloczyny,wybrane,10) | Regresja liniowa. Parametr cross to macierz iloczynów zmiennych objaśniających i zmiennej objaśnianej. Parametr cond to wektor zero-jedynkowy wskazujący zmienne do wykorzystania, 'dep' określa numer zmiennej objaśniającej w macierzy cross. |
| Wygładzanie | matrix smooth(const matrix &v,int m,int n); | smooth(v,1,3) | Wygładzanie za pomocą wielomianów interpolacyjnych. Parametr 'm' określa stopień wielomianu interpolacyjnego (od 1 do 5), parametr 'n' liczbę punktów do uśrednienia (oczekiwana jest liczba nieparzysta). W tym przypadku wyznaczana jest 3-punktowa średnia ruchoma. |
| Zapis do pliku | void writebin(FILE *f) | m.writebin(f) | Macierz jest zapisywana do pliku. |
| Odczyt z pliku | void readbin(FILE *f) | m.readbin(f) | Macierz jest odczytywana z pliku. |
