help parancs
és doc
>> help rref
Neve: betű, _, szám (számmal nem kezdődhet)
Dinamikus típuskezelés
Majdnem minden mátrix:
>> a = [1 2 3 3;2 4 3 5;3 6 6 8]
a =
1 2 3 3
2 4 3 5
3 6 6 8
>> b = [
1 2 3
4 5 6
]
b =
1 2 3
4 5 6
>> c = [1,2;3, 4]
c =
1 2
3 4
Sztring (karakterlánc):
>> s = 'Több hűtőházból kértünk színhúst'
s = Több hűtőházból kértünk színhúst
>> s(2:3)
ans = ö
Struktúra:
>> kurzus.nev = 'FelsőbbMat';
>> kurzus(2).nev = 'Torna';
Ha nincs értékadás, akkor a kifejezés értéke az ans
változóba kerül.
>> s
s = Több hűtőházból kértünk színhúst
>> 1 + 1
ans = 2
>> x = ans
x = 2
>> ++x
ans = 3
>> x
x = 3
>> x = 3*x + 1
x = 10
>> ans
ans = 3
Függvény argumentumát/argumentumait kerek zárójelbe tesszük. Egyes számra számot adó matematikai függvények mátrix argumentum esetén azt annak minden elemére alkalmazzák. Pl. a lebegőpontos számok kerekítése, alsó és felső egészrésze, 0-hoz közelebbi érték kiírása:
>> x = [-1.9 1.9]
x =
-1.9000 1.9000
>> round(x)
ans =
-2 2
>> ceil(x)
ans =
-1 2
>> floor(x)
ans =
-2 1
>> fix(x)
ans =
-1 1
Parancs | funkció |
---|---|
eye(n) |
n × n-es egységmátrix |
ones(n), ones(m,n) |
egyesekből álló mátrix |
zeros(n), zeros(m,n) |
zérusmátrix |
rand(n), rand(m,n) |
(0,1)-en egyenletes eloszlású véletlen számokból |
randi(max), randi(max,m,n) |
egész számokból álló mátrix az [1,max] intervallumból |
>> eye(2)
ans =
Diagonal Matrix
1 0
0 1
>> ones(2,3)
ans =
1 1 1
1 1 1
>> zeros(2,3)
ans =
0 0 0
0 0 0
>> rand(2)
ans =
0.46813 0.46120
0.40671 0.14030
>> rand(1,3)
ans =
0.86310 0.92620 0.53375
>> randi(6,1,10) % 10 kockadobás
ans =
6 2 6 1 1 1 4 2 1 4
>> 1:5 % start:end
ans =
1 2 3 4 5
>> 1:2:5 % start:step:end
ans =
1 3 5
>> linspace(1,7,10) % linspace(1,7) = linspace(1,7,100)
ans =
1.0000 1.6667 2.3333 3.0000 3.6667 4.3333 5.0000 5.6667 6.3333 7.0000
Parancs | funkció |
---|---|
vander(c), vander(c,n) |
Vandermonde-mátrix n oszloppal (1-ek az utolsó oszlopban) |
gallery ("circul",r) |
ciklikus (circulant) mátrix, r az első sor |
toeplitz(c), toeplitz(c,r) |
Toeplitz-mátrix első oszlop c (opc. első sor r) |
hankel(c), hankel(c,r) |
Hankel-mátrix első oszlop c (opc. utolsó sor r ) |
any(m) |
1, ha van nemnulla elem, 0, ha nincs (mátrix esetén oszloponként) |
all(m) |
1, ha minden elem nemnulla (mátrix esetén oszloponként) |
>> vander([2 1 3 4])
ans =
8 4 2 1
1 1 1 1
27 9 3 1
64 16 4 1
>> gallery ("circul", [1 2 3])
ans =
1 2 3
3 1 2
2 3 1
>> toeplitz([1 2 3])
ans =
1 2 3
2 1 2
3 2 1
>> toeplitz([1 2 3],[1 6 7 8])
ans =
1 6 7 8
2 1 6 7
3 2 1 6
>> hankel([1 2 3],[3 6 7 8])
ans =
1 2 3 6
2 3 6 7
3 6 7 8
>> any([1 2 0])
ans = 1
>> any([1 2 0; 0 0 0])
ans =
1 1 0
>> all([1 2 3])
ans = 1
>> all([1 2 3; 4 5 0])
ans =
1 1 0
>> [eye(2) ones(2); zeros(1,3) rand(1)]
ans =
1.00000 0.00000 1.00000 1.00000
0.00000 1.00000 1.00000 1.00000
0.00000 0.00000 0.00000 0.67609
>> a = [1 2 3 3;2 4 3 5;3 6 6 8]
a =
1 2 3 3
2 4 3 5
3 6 6 8
>> a(2,4)
ans = 5
>> a(1,:) % a ':' itt 'wildcard', azaz az összes oszlop
ans =
1 2 3 3
>> a(:,2)
ans =
2
4
6
>> a([1 3],[2 4])
ans =
2 3
6 8
>> a(2:3,2:end) % a([2 3],[2 3 4])
ans =
4 3 5
6 6 8
>> a(4,:) = 1:4 % a(4,:) = [1 2 3 4]
a =
1 2 3 3
2 4 3 5
3 6 6 8
1 2 3 4
>> a(4,:) = 0
a =
1 2 3 3
2 4 3 5
3 6 6 8
0 0 0 0
>> a(4,:) = []
a =
1 2 3 3
2 4 3 5
3 6 6 8
>> b = a(:,[1 3 4])
b =
1 3 3
2 3 5
3 6 8
>> b(:,end+1) = 0 % ua. b = [b [0;0;0]]
b =
1 3 3 0
2 3 5 0
3 6 8 0
>> b(:,end) = [7;6;5]
b =
1 3 3 7
2 3 5 6
3 6 8 5
>> b(:,end:-1:1)
ans =
7 3 3 1
6 5 3 2
5 8 6 3
>> vander([2 4 1 3])(:,end:-1:1)
ans =
1 2 4 8
1 4 16 64
1 1 1 1
1 3 9 27
Művelet | jelentés |
---|---|
* |
mátrixszorzás |
.* |
elemenkénti szorzás |
/ |
„jobb osztás” X / Y = XY+ |
\ |
„bal osztás” X \ Y = X+Y |
^ |
hatványozás (x^y -ban nem lehet mindkettő mátrix) |
.^ |
elemenkénti hatványozás |
' |
adjungált (valós mátrixra = transzponálás) |
.' |
komplex mátrix transzponáltja |
>> E = ones(2) + eye(2)
E =
2 1
1 2
>> R = rand(2)
R =
0.36726 0.85526
0.65364 0.78828
>> E.*R
ans =
0.73453 0.85526
0.65364 1.57657
>> E*R
ans =
1.3882 2.4988
1.6745 2.4318
>> 2^E
ans =
5 3
3 5
>> 2.^E
ans =
4 2
2 4
>> E^(1/2)
ans =
1.36603 0.36603
0.36603 1.36603
>> ans^2
ans =
2.00000 1.00000
1.00000 2.00000
>> R^-1 % ! itt kihagyható a zárójel
ans =
-2.9247 3.1732
2.4252 -1.3626
>> c = [1+5i i; 2 3-2i]
c =
1 + 5i 0 + 1i
2 + 0i 3 - 2i
>> c'
ans =
1 - 5i 2 - 0i
0 - 1i 3 + 2i
>> c.'
ans =
1 + 5i 2 + 0i
0 + 1i 3 - 2i
>> A = [1 2; 3 4], b = [0; 2]
A =
1 2
3 4
b =
0
2
>> A\b % az Ax=b egyenletrendszer megoldása
ans =
2.00000
-1.00000
>> A = [1 2; 2 4], b = [0; 2]
A =
1 2
2 4
b =
0
2
>> A\b % az Ax=b min. absz. értékű optimális megoldása
warning: matrix singular to machine precision
ans =
0.16000
0.32000
>> pinv(A)*b % ugyanez pszeudoinverzzel
ans =
0.16000
0.32000
Relációk: ==
, <
, >
, <=
, >=
, ~=
Elemenkénti logikai műveletek: &
(és), |
(vagy), ~
(nem)
>> (ones(2)+eye(2))^2 == 3*ones(2)+2*eye(2)
ans =
1 0
0 1
Alapfüggvények
Függvény | funkció |
---|---|
det(A) |
determináns |
lambda = eig(A) |
sajátértékek |
[V lambda] = eig(A) |
sajátvektorok mátrixa, sajátérték |
G = givens(x, y) |
Givens-forgatás, ami (x,y) -t (r,0) -ba viszi |
norm(A) , norm(A,p) |
p-norma, alapért: p = 2 , "inf" , "fro" |
null(A) |
ortonormált bázis a nulltérben |
orth(A) |
ortonormált bázis az oszloptérben |
mgorth(x,v) |
GS: x egységnyi merőleges összetevője a szemiortogonális v -re |
pinv(A) |
pszeudoinverz |
rank(A) |
rang |
trace(A) |
nyom |
rref(A) |
redukált lépcsős alak |
[R K] = rref(A) |
K a bázisoszlopok indexeinek vektora |
Függvény | felbontás |
---|---|
[L U P] = lu(A) |
PLU-felbontás: A = P'*L*U (P*A = L*U ) |
[Q R] = qr(A,0) |
QR-felbontás (a 0 nélkül teljes QR-felbontás) |
s = svd(A) |
szinguláris értékek |
[U S V] = svd(A) |
SVD, ahol A = U*S*V' |
S = schur(A) , S = schur(A,rc) |
S felső háromszög, rc = 'complex' vagy 'real' |
[U S] = schur(A) |
A = U*S*U' , S = U'*A*U , U unitér |
>> A = [1 2;3 4;5 6]
A =
1 2
3 4
5 6
>> [L U P] = lu(A)
L =
1.00000 0.00000
0.20000 1.00000
0.60000 0.50000
U =
5.00000 6.00000
0.00000 0.80000
P =
Permutation Matrix
0 0 1
1 0 0
0 1 0
>> P'*L*U
ans =
1.0000 2.0000
3.0000 4.0000
5.0000 6.0000
>> A == round(P'*L*U)
ans =
1 1
1 1
1 1
>> A = [1 -1 4; 1 4 -2; 1 4 2; 1 -1 0]
A =
1 -1 4
1 4 -2
1 4 2
1 -1 0
>> [Q R]=qr(A,0)
Q =
-0.50000 0.50000 -0.50000
-0.50000 -0.50000 0.50000
-0.50000 -0.50000 -0.50000
-0.50000 0.50000 0.50000
R =
-2 -3 -2
0 -5 2
0 0 -4
Írjunk függvényt a bázisfelbontás megvalósítására:
function [B R] = bazisf(A)
[R k] = rref(A);
r = rank(A);
R = R(1:r, :);
B = A(:, k);
end
Vagy az interaktív felületen megadva, vagy egy bazisf.m
fájlba írva:
>> a=[1 2 3 4;2 4 3 4;3 6 6 8]
a =
1 2 3 4
2 4 3 4
3 6 6 8
>> [B R] = bazisf(a)
B =
1 3
2 3
3 6
R =
1.00000 2.00000 0.00000 0.00000
0.00000 0.00000 1.00000 1.33333