MATLAB Programmering Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2003 d = size(s); for k = 1:d(1), for n = 1:d(2), if (s(k,n) < 0) r(k,n)

Slides:



Advertisements
Lignende præsentationer
Funktioner Grundbegreber.
Advertisements

Instruktion i Animation Shop
Programmeringsparadigmer.
Krav og usecases Larman kap. 5 og 6 (del1) Larman kap del1
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
Symbolsk maskinsprog.
Intro Forelæsning 2 Linux install-party lør.14.sept kl – man. 14.okt – Kursets omfang :7,5 ECTS Kursussammensætning: forelæsning.
Q UERY P ROCESSING & O PTIMIZATION Database Systems (Fourth Edition )
Grundlæggende programmering Efterår 2001
MATLAB Programplanlægning Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2003 >>mit_program(`ud.txt´) myconstants.m function mit_program(iud)
MATLAB Afslutning Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005.
FEN Diskret matematik/Seminar 3 - proofs 1 Beviser Et bevis er en argumentation, som overbeviser om, at en påstand er sand, påstanden kaldes.
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
Induktion og rekursion
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Indledende Datalogi /kelk 1 Nice to know ”Terniary operator” – ”?:” Bitwise operatorer og hexadecimale tal.
Operationer på relationer
MATLAB Programmering Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005 d = size(s); for k = 1:d(1), for n = 1:d(2), if (s(k,n) < 0) r(k,n)
FEN Prædikater/Seminar 11 Prædikatslogik eller Kvantificerede udtryk Prædikater udvider propositionslogikken på to måder: –Vi tillader variable.
Begrebskort for lineære differentialligningsmodeller
Anvendelser I Leg og spil.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
PC baseret analyse og simulering
GP 11, 14/ Grundlæggende programmering Efterår 2001 Forelæsning 11 onsdag 14/ kl. 9:15 – 12:00.
W1b1 PC baseret analyse og simulering. w1b2 Definition Digital Elektronisk beregningsmaskine, der har intern hukommelse til lagring af program og mellem-regninger.
1 PC baseret dataanalyse og simulering Week2 A. 2 SAS input/output filer Inddata -textfil - SAS-program -textfil- SAS datasæt SAS system SAS listing -print.
FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.
MATLAB Programplanlægning Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2003 >>mit_program(‘ind.txt’.`ud.txt´) myconstants.m function.
Ingeniørhøjskolen i Århus Slide 1 Newton approximation ”Oversæt” til algoritme - Step 5: Skriv kode - Step 4: Skriv pseudokode - Step 3: Specificér pre-
DATATYPER. For at tilpasse hvert felt i databasen til dets formål og dermed øge funktionalitet 1 bit er tilstrækkelig til at angive køn (0/1) men for.
1 Sortering. 2 Sortering ved fletning (merge-sort) 7 2 | 9 4  | 2  2 79 | 4   72  29  94  4.
Procestræ under afvikling af cp init login shell cp cp src dest.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
Paradigmer i Programmering 1. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
Anvendelser I Leg og spil.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Intro Siden sidst: evaluering på opgaver og virtuel kursus Kursussammensætning: forelæsning – læse – arbejde selvstændigt – newsgroup – øvelsestime – aflevering.
Process Control Hardware baggrund Process begrebet i et OS Process tilstande Context switching.
KJELD SVIDT, AALBORG UNIVERSITY Building Simulations - CFD 1 Building Simulations - CFD Examples Kjeld Svidt Aalborg University.
3. time Her beskæftiger vi os med John F. Sowas forklaring af erfaringsviden. John F. Sowa.
DB analyse og modellering Jesper Tørresø DAB1 F Februar 2008.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Quiz 3.1. Quiz 1 – Assignment dIntProg, E14 Hvad er værdierne af x og y efter udførelse af følgende program? 1.x er 6, y er 3 2.x er 8, y er 5 3.x er.
MATLAB Indledning Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2002.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
MATLAB Indledning Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005.
MATLAB Repetition og Udførelse af programmer Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005 >>mit_modul minf.m … minf(a) … mit_modul.m.
MATLAB Indledning II Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005.
MATLAB Programplanlægning Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005 >>mit_program(‘ind.txt’.`ud.txt´) myconstants.m function.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
SAS Code analyzer Barbara Biørn olsen.
Omsætning af en model til en RDB Jesper Tørresø DAB1 F Marts 2008.
Introduktion til glasfibre og kompositter
”Avanceret” Programmering
DB analyse og modellering
Programmering.
ROBOTTERNE KOMMER - OZOBOTTERNE.
Det lydløse terningekast
Præsentationens transcript:

MATLAB Programmering Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2003 d = size(s); for k = 1:d(1), for n = 1:d(2), if (s(k,n) < 0) r(k,n) = -1; else r(k,n) = 1; end; end; end

Programstrukturer Et program definerer rækkefølgen for at udføre ordrer. sekvens valg gentagelse (iteration, løkke) kald af underprogram (funktion) afbrydelse

Sekvens x = 0:9 A = [x ; x; x] C = A * A' D = A'* A x = 0:9; A = [x ; x; x]; C = A * A'; D = A'* A;

Valg IF expression statements ELSEIF expression statements ELSE statements END a = [1 2 4]; b = 1; if a... b = a - 1;... end; if b... b = a - 1;... elseif a > 1... b = a - 2;... else... b = 0;... end

Multivalg s = size(A); switch s(1)+s(2) case 0, disp('nulmatrix'); case 2, disp('skalar'); case 1, disp('1 x 0 ?'); otherwise, if s(1) == 1 | s(2) == 1 disp('vektor'); else disp('matrix'); end A = [] … A = 1 … A = [1 2] … A = [1; 2] … A = [1 2; 4 3]

Iteration (over søjler i vektor) FOR variable = expr, statements END for i = 1: 32, x(i) = i*0.2; y(i) = sin( x(i) ).^19; end for h = [1 2 3; 5 6 7], disp(h); end for k = [ ], y = sin( x ).^k; plot(x,y); end for m= 5, b = m; end

Generel Iteration WHILE expression, statements END % beregn kvadratroden af a % low = 0; high = a+1; while (high - low) > 2*eps, end; resultat = (high+low)/2; mid = (high+low)/2; if mid*mid > a, high = mid; else low = mid; end

Afbrydelse % finder index for element e i vektor a, hvis det findes fundet = 0; for i=1:length(a), if a(i) == e, fundet = 1; break; end; if fundet, resultat = i; else resultat = 0; end;

Funktioner function resultat = kvadratrod(a) % Beregn kvadratrod af a ved bisektion low = 0; high = a; while (high - low) > 2*eps, mid = (high+low)/2; if mid*mid > a, high = mid; else low = mid; end end; resultat = (high+low)/2; kvadratrod(4) kvadratrod(1000) ans = » ans*ans

Rekursion function resultat = kvadratrod(a) % Beregn kvadratrod af a ved bisektion resultat = trin(0,a,a); function r = trin(low,high,b) % kvadratrod b er mellem low og high if (high - low) <= 2*eps, r = (high+low)/2; return; end; mid = (high+low)/2; if mid*mid > b, r = trin(low,mid,b); else r = trin(mid,high,b); end;

Sammensat returværdi function [fundet,resultat] = findindeks(e,a) % finder index for element e i vektor a hvis det findes fundet = 0; for i=1:length(a), if a(i) == e, fundet = 1; break; end; if fundet, resultat = i; else resultat = 0; end; [b,c] = findindeks(7,a) b = 0 c = 0

Og så … PRØV DET !

Funktionaler (Function-functions) FPLOT(FUN,LIMS) plots the function specified by the string FUN between the x-axis limits specified by LIMS = [XMIN XMAX]. FUN must be the name of an M-file function with variable x such as 'sin(x)', 'diric(x,10)'. plot('sinus(x,17)', [0, 2*pi] ) Sammenlign: x = 0: 0.2 : 2*pi; plot(x, sinus(x,17))

Integral » quad('sin', 0, 2*pi) ans = 0 » quad('sinus(x,2)', 0, 2*pi) ??? Can not find function 'sinus(x,2)'. function r = sin2(x) r = sinus(x,2); » quad('sin2', 0, 2*pi) ans =

Minimum » fmin('sin', 0, 2*pi) ans = » ans/pi ans =

Løsning af Differentialligninger function xdiff = difflign(t,x) % Differentialligningerne % x(1)'(t) = x(2) % x(2)'(t) = -x(1) % xdiff = [ - x(2) ; x(1) ]; » [t,x] = ode23('difflign', [0,2*pi], [0,1]'); » plot(t,x)

Billeder B = imread('image.bmp','bmp') ; » size(B) ans = » image(B)

Billedbehandling » Udsnit = B(101:104, 301:304, :) Udsnit(:,:,1) = Udsnit(:,:,2) = Udsnit(:,:,3) = » image(Udsnit);

Ind- og Udlæsning fra filer » help iofun File import/export functions. load - Load workspace from MAT-file. save - Save workspace to MAT-file. dlmread - Read ASCII delimited file. dlmwrite - Write ASCII delimited file. wk1read - Read spreadsheet (WK1) file. wk1write - Write spreadsheet (WK1) file. Command window I/O clc - Clear command window. home - Send cursor home. disp - Display array. input - Prompt for user input. pause - Wait for user response.

Positionsbestemmelse p = [x, y] w 1 = [a,b] -- lokalt A = [ cos(theta) sin(theta) -sin(theta) cos(theta) ] w l GLOBAL = ( p’ + A*w 1 ’)’ p M1?M1? M 1 ‘ = p ‘+ X*w 1 ’

Løsningsforsøg p X = (M 1 ‘ - p ‘)/w 1 ’ » p = [1 1]; » w1 = [1 0.5]; » M = [1.5 0]; » (M' - p')/w1' ans = M 1 ‘ = p ‘+ X*w 1 ’

Bedre forsøg M 1 ‘ = p ‘+ X*w 1 ’ X= [ cos(theta) sin(theta) -sin(theta) cos(theta) ] f(theta) = M 1 ‘ - p‘ - X *w 1 ’ Dvs. f(theta) = [ 0 0]’ Husk så at for vektor a gælder: a*a’ = |a| 2 Dvs. Vi kan finde minimum for z(theta) = f(theta) * f(theta)’ function r = fz(theta) global M p w1; X = [cos(theta), sin(theta); -sin(theta), cos(theta)]; f = M' - p' - X*w1'; r = f'*f;

Løsning p » global p M w1 » p = [1 1]; » w1 = [1 0.5]; » M = [1.5 0]; » fmin('fz', 0, 2*pi) ans = » ans/pi ans = » M = [0 0]; » fmin('fz', 0, 2*pi) ans = » ans/pi ans =

Forbrænding Et kulpartikel brænder: - Nogle dele er dækket af en askeflage - Andre dele er glød Hvordan udvikler det sig ?

En model function Pnext = step(P,f) % Simulering af forbrænding: emne er matrix P % med glød = 1 % aske = 0 % Sandsynlighed for glød i næste trin % afhænger af om naboer er ens, samt en % koefficient f. % Naboer regnes cyklisk.

Algoritmen function Pnext = step(P,f) d = size(P); Pnext = zeros(d); for i = 1:d(1), for j = 1:d(2), n = P(op(i,d(1)), j ); e = P(i, ned(j,d(2)) ); s = P(ned(i,s(1)), j ); v = P(i, op(j,d(2)) ); if (2+n+sy+e+v)*f*rand > 0.5, Pnext(i,j) = 1; end; function r = ned(k,n); r = k-1; if r == 0, r = n; end; function r = op(k,n); r = k+1; if r > n, r = 1; end;

Simulering P = rand(7, 8) > 0.5; pcolor(P); P = step(P, 0.5); pcolor(P); …

Eksempel function r = fz(x) global M p w1; X = [cos(x), sin(x); -sin(x), cos(x)]; r1 = M' - p' - X*w1'; r = r1'*r1; » global M w1 p » M = [1.5 0] » w1 = [1 0.5] » p = [1 1] » fmin('fz',0,pi)/pi ans = fz(ans*pi) ans = e-032