Date: Wed, 31 Mar 2004 16:32:38 +0200 From: Christian MårtensonTo: Ronnie Johansson , Pontus Svenson Cc: Robert Suzic , Robert Suzic Subject: Re: Utveckling i Matlab Det smidigaste är om ni undviker objektorientering i Matlab. Vi har inte testat några "vid sidan om"-varianter och det vore nog olyckligt för arkitekturen med en sådan lösning. Däremot kan man försöka ha en objektlik struktur på sina moduler, bl a genom att samla alla variabler för ett visst "objekt" i en struct som sedan skickas med till objektets funktioner. Om ni har lite tålamod kommer Pontus garanterat med fler kommentarer (han undervisar idag och imorgon). /Christian
På FOI finns ett matlabgränssnitt mot Flames funktioner som att få kartdata och sånt. Här följer en del av dokumentationen (kopierad 2004-04-07)
s
som innehåller en struct. Vi kan nu skriva exempelvis s(2) = s
och vips har s
förvandlats till en struct array. Observera dock att alla element i arrayen måste ha samma struktur (fält). Vill man ha olika fält i sina struktar kan man använda cell-array.
>> b(2) ans = objid: 'obj1' prio: 5 >> fieldname = 'prio' fieldname = prio >> index = 2 index = 2 >> b(index).(fieldname) ans = 5
res = functionname(one_argument)
och res = functionname
.
Av = reshape(A,8,1); Kolumnvektor A v = Av ' ; Radvektor % Mastrien fås tillbaka med kommandot A = reshape(Av, 2,4);
>> num2str(8) ans = 8 >> strcat('v',ans) ans = v8 >> strcat(ans,'=0') ans = v8=0 >> eval(ans) % utvärdera 'v8=0' v8 = 0 >> whos Name Size Bytes Class ans 1x4 8 char array v8 1x1 8 double array Grand total is 5 elements using 16 bytes >> v8 % Debugging > dbstop if error > whos args Ø dbquit
axis ij axis xy
Man skriver Stuctnamn = struct('attributnamn1', värde av attribut1, 'attributnamn1', värde av attribut1...) Värdena fås ut genom att Stuctnamn. attributnamn1
I cellarrayes stoppar man in väden från olika datatyper. De är numerarde T.ex >> c = cell(1) vilket ger cellarray med längden 1 . Man kan stoppa in matris, strukt eller ett visst värde genom att skriva >> c{1} = Struktnamn; en cellarray kan vara av olika storlekar Man kan dynamiskt bilda cellarayer A = cell(1,5) B = cell(1); B{1} = Structaname; A = [A B];
>> save 'filnamn.mat' kalle sparar matrisen kalle till fil med namnet filnamn >> load filnamn laddar .mat filen med filnamn filnamn
Ändrad: 2004-04-25