matlab afslutning

27
MATLAB Afslutning Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005

Upload: niran

Post on 15-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

MATLAB Afslutning. Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005. MATLAB. Hvorfor? Hvordan?. Et værktøj til tekniske beregninger. Analyse og modellering af data Simulering af modeller. Værktøjskasser osv. Andre muligheder. Lommeregner Regneark (Excel) Maple - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: MATLAB  Afslutning

MATLAB Afslutning

Anders P. Ravn

Institut for Datalogi

Aalborg Universitet

Forår 2005

Page 2: MATLAB  Afslutning

MATLAB

• Hvorfor?

• Hvordan?

Page 3: MATLAB  Afslutning

Et værktøj til tekniske beregninger

• Analyse og modellering af data

• Simulering af modeller

Page 4: MATLAB  Afslutning

Værktøjskasser osv.

Page 5: MATLAB  Afslutning

Andre muligheder

• Lommeregner

• Regneark (Excel)

• Maple

• MathCad

• SAS

• …Brug det rigtige værktøj til opgaven

Page 6: MATLAB  Afslutning

Structures

v1= struct('Varenavn', 'Papirclips', 'Pris', 19.95)

v1 =

Varenavn: 'Papirclips' Pris: 19.9500

Page 7: MATLAB  Afslutning

En ny stuktur

>>v1= struct('Varenavn', 'Papirclips', 'Pris', 19.95)v1 = Varenavn: 'Papirclips' Pris: 19.9500

>>v2 = v1; v2.Varenavn = 'Elastikker'; v2.Pris= 17.50; >>v2

v2 =

Varenavn: 'Elastikker' Pris: 17.5000

Page 8: MATLAB  Afslutning

En database

>> v3 = v1; v3.Varenavn = 'Tape'; v3.Pris= 9.25; v3v3 = Varenavn: 'Tape' Pris: 9.2500>> lager = [v1 v2 v3]

lager = 1x3 struct array with fields: Varenavn Pris

>> lager(2).Prisans = 17.5000

Page 9: MATLAB  Afslutning

En database-operation

function pris=findpris(varelager,vare)for v = varelager if strcmp(v.Varenavn,vare) pris= v.Pris; return; endendpris = -1

>> findpris(lager,'Tape')

ans = 17.5000

m-fil

Page 10: MATLAB  Afslutning

Data analyse – fiskeskiver

0 10 20 30 40 50 60 70 80 90 1000

5

10

15

20

25

30

35

Page 11: MATLAB  Afslutning

Positionsbestemmelse

p = [x , y]

w1 = [a,b] -- lokalt

A = [ cos(theta) sin(theta) -sin(theta) cos(theta) ]

wl GLOBAL = ( p’ + A*w1’)’

p

M1

?

M1‘ = p ‘+ X*w1’

Page 12: MATLAB  Afslutning

Løsningsforsøg

p

X = (M1‘ - p ‘)/w1’

» p = [1 1];

» w1 = [1 0.5];

» M = [1.5 0];

» (M' - p')/w1'ans = 0.5000 0 -1.0000 0

M1‘ = p ‘+ X*w1’

Page 13: MATLAB  Afslutning

Bedre forsøg

M1‘ = p ‘+ X*w1’

X= [ cos(theta) sin(theta) -sin(theta) cos(theta) ]

f(theta) = M1‘ - p‘ - X *w1’

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;

Page 14: MATLAB  Afslutning

Løsning

p

» global p M w1» p = [1 1];» w1 = [1 0.5];» M = [1.5 0];

» fmin('fz', 0, 2*pi)ans = 1.5708» ans/pians = 0.5000

» M = [0 0];» fmin('fz', 0, 2*pi)ans = 2.8198» ans/pians = 0.8976

Page 15: MATLAB  Afslutning

Eksempelfunction 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)/pians = 0.5000

fz(ans*pi)ans = 1.2326e-032

Page 16: MATLAB  Afslutning

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

ans =

1008 886 3

» image(B)

100 200 300 400 500 600 700 800

100

200

300

400

500

600

700

800

900

1000

Page 17: MATLAB  Afslutning

Billedbehandling» Udsnit = B(101:104, 301:304, :)Udsnit(:,:,1) = 188 183 176 182 198 182 172 172 188 195 173 159 185 188 169 156Udsnit(:,:,2) = 183 168 162 172 190 172 169 167 179 185 172 158 179 179 166 151Udsnit(:,:,3) = 179 163 159 171 187 163 162 163 174 176 167 153 167 170 157 147

» image(Udsnit);

100 200 300 400 500 600 700 800

100

200

300

400

500

600

700

800

900

1000

0.5 1 1.5 2 2.5 3 3.5 4 4.5

0.5

1

1.5

2

2.5

3

3.5

4

4.5

Page 18: MATLAB  Afslutning

Forbrænding

Et kulpartikel brænder: - Nogle dele er dækket af en askeflage - Andre dele er glød

Hvordan udvikler det sig ?

Page 19: MATLAB  Afslutning

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.

Page 20: MATLAB  Afslutning

Algoritmenfunction 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; end;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;

Page 21: MATLAB  Afslutning

SimuleringP = rand(7, 8) > 0.5; pcolor(P);

P = step(P, 0.5); pcolor(P);…

1 2 3 4 5 6 7 81

2

3

4

5

6

7

1 2 3 4 5 6 7 81

2

3

4

5

6

7

Page 22: MATLAB  Afslutning

Simpel Ind- og Udlæsning

» help iofun

File import/export functions. load - Load workspace from MAT-file. save - Save workspace to MAT-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.

Page 23: MATLAB  Afslutning

Formatteret Ind- og Udlæsning

File opening and closing. fopen - Open file. fclose - Close file. Formatted file I/O. fscanf - Read formatted data from file. fprintf - Write formatted data to file. ...

Page 24: MATLAB  Afslutning

FormaterThe format specifier :

% [- | + | 0] [Field Width][.Precision] Format Character "-" aligns output left (usually, it's right-aligned). "+" outputs a plus sign for positive numbers (usually, it is supressed). “0” outputs leading zeroes.

The field width specifies the overall field length.

The precision specifies the length of the fractional part for floating point numbers. If omitted, the default is 6. The format character determines the base type for the formatted values: "d": integer value in decimal format. "f": floating point value in fixed format (xxx.yyyyyy). "e": floating point value in scientific format (0.yyyyyye+zzz). "E": floating point value in scientific format (0.yyyyyyE+zzz). "s": String.

Page 25: MATLAB  Afslutning

Eksempel

fprintf(red_file,'Jordens radius: %9.0f m\n',R);

fprintf(red_file,'Refraktionskoefficient: %9.2f\n',k);

fprintf(red_file,'\r\n');

fprintf(red_file,' Fra Til V Sd ih sh S d_H\n');

fprintf(red_file,' gon m m m m m\n');

Jordens radius: 6386000 m

Refraktionskoefficient: 0.13

Fra Til V Sd ih sh S d_H

gon m m m m m

Page 26: MATLAB  Afslutning

Eksempel

fprintf(red_file,'%5.0f %5.0f %9.4f %9.3f %9.3f %9.3f %9.3f%9.3f\n',linie);

5007 5001 99.8900 307.762 1.640 1.555 307.762 0.623

Page 27: MATLAB  Afslutning

Nu til Øvelser

• Saml op på tidligere øvelser

• Kig på opgave