%% Matrizen VII: Transponieren
% Mit Konjugation '
% Ohne Konjugation .'
F = rand(3,2)
F'
F + sqrt(-1)*F
F'
F = F + sqrt(-1)*F
F'
F.'

%% Matrizen VIII: Funktionen
% Rang der Matrix
% Determinante
% Inverse
rank(F)
A = [1 , 2 ; 3 , 4]
A
det(A)
inv(A)
inv(A)*A

%% Matrizen IX: Lineare Gleichungssysteme
b = [1;1]
x = inv(A)*b
A*x
x = A\b

%% Matrizen X: Zugriff auf Teilmatrizen
%
clc
A = [1:3; 4:6; 7:9]
A(2,1)
A(2,:)
A(:,3)
A([3 1 2], 1:2)

diag(A)

E = ones(9);
E(3:7,3:7) = zeros(5)

%% Matrizen XI: Manipulation von Matrizen und Vektoren
%
% reshape: spaltenweise Ordnung bleibt gleich
%
clc
A = [1:3; 4:6]
A(:)
A = reshape(A,3,2)
A = reshape(A,1,6)
A = reshape(A,2,3)
%
% tril, triu
%
clc
A = round(5*rand(5,5))
tril(A)
triu(A)
triu(A,2)
triu(A,-1)

%% Matrizen XII: Löschen von Zeilen und Spalten
%
clc
A
B = tril(A,-2) + triu(A,2)
A(3,:)=[]
A(:,3)=[]
whos
B=B([1 2 4 5],[1 2 4 5])

%% Tensoren (Mehrdimensionale Arrays/Matrizen)
%
clc
C(:,:,1) = [1 2; 3 4]
C(:,:,2) = [5 6; 7 8]
whos
zeros(2,2,2,2)
whos

%% Laden von Matrizen

A = load('examplematrix.dat')

%% Speichern von Variablen in einer Datei
%
% save
%
% alle Variablen aus dem Workspace
save examplesave.mat

% nur ausgewaehlte Variablen
save('testsave.mat', 'A')


%% Logische Operationen
% Variablentyp: Wahrheitswert
% true(=1) oder false(=0)
% Logisches und &&
% Logisches oder ||
% Vergleiche liefern Wahrheitswert 1 oder 0
a=1:4
b=linspace(3,6,4)

clc
f = false
t = true
f || t
f && t
a > c
a > b
a
b
find(a > b)