5 svar
196 visningar
abcdefg behöver inte mer hjälp
abcdefg 274
Postad: 16 nov 2019 16:48

Definiera variabel i Matlab

Hej,

Hur gör jag om jag har ett uttryck/funktion för en vektor som jag vill definiera i ett script? Var skriver jag detta och hur skriver jag detta? 

Dr. G 9457
Postad: 16 nov 2019 16:58

En variant är en s.k anonymous function

v = linspace(-5,5,101);

f = @(x) x.^2 + sin(x);

plot(v,f(v),'b-')

 

Funktionen kan även definieras som

function y = f(x)

y = x.^2 + sin(x);

end

För mer komplicerade funktioner som inte går att skriva på en rad är den senare varianten att föredra. 

abcdefg 274
Postad: 16 nov 2019 17:04
Dr. G skrev:

En variant är en s.k anonymous function

v = linspace(-5,5,101);

f = @(x) x.^2 + sin(x);

plot(v,f(v),'b-')

 

Funktionen kan även definieras som

function y = f(x)

y = x.^2 + sin(x);

end

För mer komplicerade funktioner som inte går att skriva på en rad är den senare varianten att föredra. 

Tack. Men i det här fallet har jag två vektorer v =(v1,v2,v3) och u = (u1,u2,u3), där jag har uttryck för v1 och v2:

V1 = sqr(u2)

V2 = sqr(u3) 

Då kan jag väl inte skriva det som funktion? 

Dr. G 9457
Postad: 16 nov 2019 20:21

Visst

function v = g(u)
v(1)= sqrt(u(2));
v(2)= sqrt(u(3));
v(3)= abs(u(2)-u(1));
end

Nu hittade jag på något uttryck för v(3).

Kör funktionen med t.ex
U = [2,3,4]
V = g(U)

eller

g([pi,0,1])

Tänk på att negativa tal i u kan ge komplexa tal i v.

Dr. G 9457
Postad: 16 nov 2019 20:29

Samms sak med anonymous function:

g = @(u) [sqrt(u(2)), sqrt(u(3)), abs(u(2)-u(1))];

U = [2,3,4]
V = g(U)

abcdefg 274
Postad: 16 nov 2019 20:30
Dr. G skrev:

Visst

function v = g(u)
v(1)= sqrt(u(2));
v(2)= sqrt(u(3));
v(3)= abs(u(2)-u(1));
end

Nu hittade jag på något uttryck för v(3).

Kör funktionen med t.ex
U = [2,3,4]
V = g(U)

eller

g([pi,0,1])

Tänk på att negativa tal i u kan ge komplexa tal i v.

Tack!

Svara
Close