Macierz (matrix)

MetodaDeklaracja metodyPrzykład wywołaniaOpis działania
Utworzenie pustej macierzymatrix()matrix mTworzona jest pusta macierz
Utworzenie macierzy o zadanych wymiarachmatrix(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 wymiarzematrix(int m)matrix m(3)Tworzona jest macierz wymiarach m x m.
W tym przypadku tworzona jest macierz 3x3.
Utworzenie macierzy z liczbymatrix(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 napisumatrix(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łkowitychvector 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łychmatrix 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 liczbmatrix 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 liniowematrix 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 zerowamatrix 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 jedynkowamatrix 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 jednostajnegomatrix 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 normalnegomatrix 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ściowamatrix 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łównamatrix 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 arytmetycznejmatrix 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.
Zerowanievoid zeros()m.zeros()Macierz jest zerowana.
Wypełnianie jedynkamivoid ones()m.ones()Macierz jest wypełniana jedynkami.
Wypełnianie wartościami z rozkładu jednostajnegovoid rand()m.rand()Macierz jest wypełniana wartościami z rozkładu jednostajnego [0,1].
Wypełnianie wartościami z rozkładu normalnegovoid randn()m.randn()Macierz jest wypełniana wartościami z rozkładu normalnego o parametrach (0,1).
Wypełnianie identycznościowevoid eye()m.eye()Macierz jest wypełniana zerami, a na głównej przekątnej jedynkami.
Wypełnianie wartościami testowymivoid 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ędnamatrix 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 kwadratumatrix 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.
Unormowaniematrix 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.
Minimummatrix 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).
Maksimummatrix 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).
Licznikmatrix 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).
Sumamatrix 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ówmatrix 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).
Iloczynmatrix 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 skumulowanamatrix cumsum(const matrix &a)cumsum(m)Wyliczana jest suma skumulowana elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym).
Iloczyn skumulowanymatrix cumprod(const matrix &a)cumprod(m)Wyliczany jest iloczyn skumulowany elementów każdej kolumny (lub wiersza, jeśli macierz jest wektorem wierszowym).
Przeciwieństwovoid 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).
Wariancjamatrix 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 standardowematrix 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).
Medianamatrix 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).
Modamatrix 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 / kwantylematrix 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%.
Crossproductmatrix crossprod(const matrix &a)crossprod(m)Obliczana jest suma iloczynów każdej kolumny z każdą macierzy 'a'.
Kowariancjamatrix cov(const matrix &a)cov(m)Obliczana jest kowariancja każdej kolumny z każdą macierzy 'a'.
Korelacjamatrix cor(const matrix &a)cor(m)Obliczana jest korelacja każdej kolumny z każdą macierzy 'a'.
Histogrammatrix hist(const matrix &a)hist(m)Wyznaczany jest histogram dla każdej kolumny. Wynik jest macierzą z podanymi udziałami w przedziałach.
Podsumowanie kolumnmatrix 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 parametremmatrix 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 dwuargumentowematrix 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 dwuargumentowematrix 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 dwuargumentowadouble cov(const matrix &a,const matrix &b)cov(m1,m2)Kowariancja wektorów 'a' i 'b'. W wyniku zwracana jest liczba.
Korelacja dwuargumentowadouble cor(const matrix &a,const matrix &b)cor(m1,m2)Korelacja wektorów 'a' i 'b'. W wyniku zwracana jest liczba.
Suma warunkowamatrix 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 warunkowamatrix 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 macierzowematrix 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ą 2matrix sqrT2(const matrix &a)sqrT2(m)Podniesienie do kwadratu z transpozycją wersja 2. Odpowiada operacji mul(~a,a).
Iloczyn skalarnydouble scmul(const matrix &a,const matrix &b)scmul(m1,m2)Iloczyn skalarny.
Kwadrat skalarnydouble scsqr(const matrix &a)scsqr(m)Kwadrat skalarny.
Komutatordouble comut(const matrix &a,const matrix &b)comut(m1,m2)Komutator.
Śladdouble trace(const matrix &a)trace(m)Ślad macierzy.
Sinusmatrix sin(const matrix &a)
void sin()
sin(m)
m.sin()
Sinus po elementach macierzy.
Cosinusmatrix cos(const matrix &a)
void cos()
cos(m)
m.cos()
Cosinus po elementach macierzy.
Tangensmatrix tan(const matrix &a)
void tan()
tan(m)
m.tan()
Tangens po elementach macierzy.
Sinus hiperbolicznymatrix sinh(const matrix &a)
void sinh()
sinh(m)
m.sinh()
Sinus hiperboliczny po elementach macierzy.
Cosinus hiperbolicznymatrix cosh(const matrix &a)
void cosh()
cosh(m)
m.cosh()
Cosinus hiperboliczny po elementach macierzy.
Tangens hiperbolicznymatrix tanh(const matrix &a)
void tanh()
tanh(m)
m.tanh()
Tangens hiperboliczny po elementach macierzy.
Arcus sinusmatrix asin(const matrix &a)
void asin()
asin(m)
m.asin()
Arcus sinus po elementach macierzy.
Arcus cosinusmatrix acos(const matrix &a)
void acos()
acos(m)
m.acos()
Arcus cosinus po elementach macierzy.
Arcus tangensmatrix atan(const matrix &a)
void atan()
atan(m)
m.atan()
Arcus tangens po elementach macierzy.
Eksponentamatrix exp(const matrix &a)
void exp()
exp(m)
m.exp()
Eksponenta po elementach macierzy.
Logarytmmatrix log(const matrix &a)
void log()
log(m)
m.log()
Logarytm po elementach macierzy.
Logarytm dziesiętnymatrix log10(const matrix &a)
void log10()
log10(m)
m.log10()
Logarytm dziesiętny po elementach macierzy.
Potęgamatrix 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łkowitamatrix pow(const matrix &a, int d)
void pow(int d)
pow(m,3)
m.pow(3)
Potęga całkowita po elementach macierzy.
Pierwiastekmatrix 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.
Zaprzeczeniematrix operator !(const matrix &a)!mZaprzeczenie elementów macierzy. Zera zamieniane są na jedynki, inne wartości na zera.
Koniunkcjamatrix operator &&(const matrix &a,const matrix &b)m1&&m2Koniunkcja po elementach macierzy 'a' i 'b'
Alternatywamatrix operator ||(const matrix &a,const matrix &b)m1||m2Alternatywa po elementach macierzy 'a' i 'b'
Błąd:510matrix 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.
Projekcjamatrix proj(const matrix &a,const matrix &b)proj(m1,m2)Projekcja 'a' na 'b'
Normadouble norm2(const matrix &a)norm2(m)Norma w przestrzeni R2.
Ortonormalizacjavoid orthonorm()m.orthonorm()Ortogonalizacja Grama-Schmidta z normalizacją
Dekompozycja QRvoid 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 LUvoid 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'.
Wyznacznikdouble 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 odwrotnamatrix 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.
Sweepingvoid linreg_sweep(int k1,int k2)m.linreg_sweep(1,10)Sweeping macierzy dla kolumn od k1 do k2.
Regresja liniowamatrix linreg(const matrix &a,const matrix &b)linreg(m,v)Regresja liniowa dla zmiennych objaśniających 'a' i zmiennej objaśnianej 'b'.
Sweeping warunkowyvoid 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 warunkowamatrix 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ładzaniematrix 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 plikuvoid writebin(FILE *f)m.writebin(f)Macierz jest zapisywana do pliku.
Odczyt z plikuvoid readbin(FILE *f)m.readbin(f)Macierz jest odczytywana z pliku.