2008-09-16, 20:15
  #1
Medlem
Någon som har koll på hur man programmerar grafik i Matlab?

Har gjort en funktion som ska ta en vektor med handtag till grafer och sedan byta namn på fönstret som valfri graf visas i. Jag tycker att jag har gjort rätt men texten ändras inte för mig när jag kör koden.
Någon som har ork att hjälpa mig?
Så här ser funktionen ut:

function v = changefigure(v)
i = input('Välj en graf.')

if(v(i) == 0)
Disp('Är ingen graf');

else


k = input('Skriv ny titel', 's')
h = v(i);
if(max(ishandle(h)) == 1)


hp = get(h, 'Parent');
hpp = get(hp, 'Parent');
set(hpp, 'Name', k);
else
disp('Fel!');
end
end
Citera
2008-09-16, 23:22
  #2
Medlem
evolutes avatar
Du tar in figure handles som jag förstår det. Kolla på de attribut som ens går att sätta för figuren h, dess parent hp och "farförälder" hpp. Attributet "name" finns bara för h, inte för hp och hpp existerar inte överhuvudtaget.
Citera
2008-09-17, 00:13
  #3
Medlem
Citat:
Ursprungligen postat av evolute
Du tar in figure handles som jag förstår det. Kolla på de attribut som ens går att sätta för figuren h, dess parent hp och "farförälder" hpp. Attributet "name" finns bara för h, inte för hp och hpp existerar inte överhuvudtaget.

Nej jag tar väl in ett handle till en graf? Jag har lite svårt att hålla isär vad som är figure och graf.
Men vektorn v innehåller i alla fall handtag som är skapade av eval-funktionen.
Då blir det väl handtag till grafer?
Alltså när jag ska ändra texten i grafens figure fönster så måste jag ändra i grafens "farfar", vilket blir hpp.
Har jag missförstått något rejält?
Citera
2008-09-17, 00:26
  #4
Medlem
evolutes avatar
Citat:
Ursprungligen postat av Lord_Stalin
Nej jag tar väl in ett handle till en graf? Jag har lite svårt att hålla isär vad som är figure och graf.
Men vektorn v innehåller i alla fall handtag som är skapade av eval-funktionen.
Då blir det väl handtag till grafer?
Alltså när jag ska ändra texten i grafens figure fönster så måste jag ändra i grafens "farfar", vilket blir hpp.
Har jag missförstått något rejält?

Jag vet ju inte vad du tar in (eval-funktionen kan ju skapa vad som helst) men ja, om du tar in ett grafhandle (som exempelvis skapas av plot-kommandot) så har "farfar" ett name. Det enklaste är förstå att kolla vad dina hp och hpp egentligen innehåller.

Säg exakt vad det är du tar in.

Med följande kommandon så fungerar ditt program:

Kod:
figure(1)
h1=plot(x,x.^2)
figure(2)
h2=plot(x,x.^3)
v=[h1 h2];
changefigure(v)
__________________
Senast redigerad av evolute 2008-09-17 kl. 00:30.
Citera
2008-09-17, 00:31
  #5
Medlem
Här är koden som lägger in handtag i vektorn v som changeFigure sedan tar.
Cons tar alltså en tom vektor.

function v = cons(v)



try

n1 = input('Ange funktionens undre gränsvärde ');
n2 = input('Ange funktionens övre gränsvärde ');

f = input('Ange den funktion du vill rita upp: ', 's');


i = input('Ange ett ID-nummer till den grafen ');
figure(i);
h = ezplot(f, [n1 n2]);
h = 3;
v(i) = h;



catch
lasterr
error('fel')


end
Citera
2008-09-17, 00:32
  #6
Medlem
Ezplot var det naturligtvis, inte eval.
Citera
2008-09-17, 00:33
  #7
Medlem
evolutes avatar
Raden "h = 3" förstör ju allt. Varför är den med?
Citera
2008-09-17, 00:35
  #8
Medlem
Citat:
Ursprungligen postat av evolute
Raden "h = 3" förstör ju allt. Varför är den med?

Jag testade olika saker och glömde ta bort allt innan jag postade den, den ska inte vara med.
Citera
2008-09-17, 00:38
  #9
Medlem
evolutes avatar
Citat:
Ursprungligen postat av Lord_Stalin
Jag testade olika saker och glömde ta bort allt innan jag postade den, den ska inte vara med.

Utan den raden fungerar det för mig.

Kod:
>> v=cons(zeros(1,5))
Ange funktionens undre gränsvärde 0.5
Ange funktionens övre gränsvärde 10
Ange den funktion du vill rita upp: x.^2
Ange ett ID-nummer till den grafen 3

v =

         0         0  467.0031         0         0

>> changefigure(v)
Välj en graf.3

i =

     3

Skriv ny titelbanan

k =

banan


ans =

         0         0  467.0031         0         0

>> 
Citera
2008-09-17, 00:40
  #10
Medlem
Testade precis jag också, nu går den...fast koden ser precis ut som den gjorde tidigare.
Det fungerade att fråga i alla fall, äkta Matlab.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in