%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp('Beispiele zu Datentypen in Matlab')

clear all
close all


%Logische Matrizen
disp('Beispiele zu logischen Matrizen')

A=pi*eye(2);
B=[pi 0; 1 0];
%Vergleichen von Matrizen und anlegen von logischen Matrizen
A<B
A==B
A>B
A>=B
A<=B
A~=B

logical(A)
whos

%Rechnen mit logischen Matrizen
disp('Rechnen mit logischen Matrizen')
A&B
A|B

A-(A==B).*B

clear all

A=magic(2);
B=triu(A);
A(B>A)
A(B==A)

find(B==A)
B(find(B==A))


%Sparse Matrizen
disp('Beispiele zur Sparse Matrizen')
input('Return druecken')
close all
clear all


disp('Anlegen von Sparse Matrizen')

A=speye(100);
B=sprand(100,100,0.01);
C=eye(100);

E=sparse(eye(100))
F=full(sprand(100,100,0.01))
whos

disp('Anzeigen von Sparse Matrizen')

spy(B)
hold on
spy(A, 'r')
hold off

%Zeichenketten
disp('Beispiele Zeichenketten')
input('Return druecken')
close all
clear all

a='Hallo Ulm'
whos
a(1:5)

disp('Umwandeln und Bearbeiten von Zeichenketten')
b=double(a)
c=char(b+1)

b=strrep(a, 'Ulm', 'Welt')  %Ersetzen von Teilstrings


strcmp(a,b)                 %Vergleichen von Strings
strcmp(a(1:5),b(1:5))       
findstr('Ulm', a)           %Suchen von Zeichenketten

upper(b)                    %Umwandeln in Gross-
lower(b)                    %bzw. Kleinbuchstaben


fast_pi='3.14'
str2num(fast_pi)            %Umwandeln von Zeichenketten in Zahlen
Kreiszahl=num2str(pi)       %und umgekehrt

whos

help strfun

%Mehrdimensionale Felder
disp('Mehrdimensionale Felder')
input('Return druecken')
close all
clear all

A=rand(2,2,2)
whos
numel(A)
size(A)
ndims(A)
permute(A,[2,1,3])



%Cell Arrays
disp('Cells Arrays')
input('Return druecken')
close all
clear all

C={rand(2,10), eye(50); magic(8), []}
whos

iscell(C)

C(1)        %Zugriff auf den ersten Eintrag als Objekt
C{1}        %Zugriff auf den Inhalt des ersten Objekts
C{1}(1,2)

cellplot(C) %Graphische Darstellung des Cell Arrays

clear C
C = {1:10, [2; 4; 6], []};
cellfun(@mean, C)   %Anwenden einer Funktion auf alle Elemente eines Cell Arrays


%Strukturen
disp('Strukturen')
input('Return druecken')
close all
clear all

%Anlegen von Structs
A=struct('Name', 'Mustermann', 'Vorname', 'Max', 'Punkte', 10)
B.Name='Beate';
B.Name='Beispiel';
B.Vorname='Beate';
B.Punkte=10

%Auslesen und Veraendern von Structs
B.Name
B.Punkte
getfield(B, 'Punkte')
setfield(B, 'Punkte', 20)

isfield(B, 'Alter')
isfield(B, 'Punkte')
rmfield(A, 'Punkte')        %Loescht ein Feld


%Umwandeln von Structs und Cell Arrays
C=struct2cell(A)
F=fieldnames(A)
B=cell2struct(C,F)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
input('Return druecken zum Beenden')
close all
clear all