Matlab interpolatie

Gelieve in dit forum flood te vermijden.
Gebruikersavatar
Ruben
Doctor in de forumwetenschappen
Doctor in de forumwetenschappen
Berichten: 4848
Lid geworden op: 20 dec 2007, 21:15
Locatie: Steenhuffel

Matlab interpolatie

Berichtdoor Ruben » 26 jan 2012, 00:46

Hey een vraagje ivm matlab interpolatie.
Stel ik heb
x =5
en
A = [0 10 20 30]

Hoe kan je snel en efficient opzoeken tussen welke indices, van de matrix A, x ligt. Hier dus min = 1 en max = 2.
Want moet een driedubbele interatie doen en dat is op mijn huidige manier met een if/elsif waarbij wordt nagegaan of
if x > A(4)
elseif x<A(4) && x>A(3)

maar dat dan voor een matrix A van 8 punten en dan voor elke van deze 8 punten hetzelfde met een ander matrix van ook 8 punten. Welke dus aanleiding geeft tot een gigantische if/elseif lus.
Ruben - Delivering awesomeness since 1989
Gebruikersavatar
ideglier
Prof in de forumwetenschappen
Prof in de forumwetenschappen
Berichten: 5400
Lid geworden op: 11 okt 2008, 18:27
Locatie: Asse

Re: Matlab interpolatie

Berichtdoor ideglier » 26 jan 2012, 01:02

dit doe je best zo:
stel x = 5
en A = [0 10 20 30]

Waarschijnlijk bedoel je dat A een vector is ;)

dan doe je het volgende:

Signs = sign(A-x) % = sign([-5 5 20 30]) = [-1 1 1 1]
Tussen = find(Signs(2:end) - Signs(1:end-1)) % vindt opeenvolgende indices die verschillend zijn van nul, hier dus find([1 1 1] - [-1 1 1]) = find([2 0 0]) = 1 = Tussen

En nu heb je de 2 indices gevonden namelijk Tussen en Tussen+1 oftewel hier 1 en 2. Indien er meerdere punten zijn waarvoor geldt dat x ertussen zit, zal Tussen een vector zijn...
I love the smell of petrol in the morning. Smells like ... SPEED!
Afbeelding
Gebruikersavatar
ideglier
Prof in de forumwetenschappen
Prof in de forumwetenschappen
Berichten: 5400
Lid geworden op: 11 okt 2008, 18:27
Locatie: Asse

Re: Matlab interpolatie

Berichtdoor ideglier » 26 jan 2012, 01:02

Het kan zijn dat er een matlabfunctie voor bestaat al maar da weet ik ni direct...
I love the smell of petrol in the morning. Smells like ... SPEED!
Afbeelding
Gebruikersavatar
Ruben
Doctor in de forumwetenschappen
Doctor in de forumwetenschappen
Berichten: 4848
Lid geworden op: 20 dec 2007, 21:15
Locatie: Steenhuffel

Re: Matlab interpolatie

Berichtdoor Ruben » 26 jan 2012, 01:10

Bedankt denk dat het hiermee moet lukken!
Ik voel hier een reductie van 400 naar 20 lijntjes aankomen! :p
Ruben - Delivering awesomeness since 1989
Gebruikersavatar
ideglier
Prof in de forumwetenschappen
Prof in de forumwetenschappen
Berichten: 5400
Lid geworden op: 11 okt 2008, 18:27
Locatie: Asse

Re: Matlab interpolatie

Berichtdoor ideglier » 26 jan 2012, 10:51

Ruben schreef:Bedankt denk dat het hiermee moet lukken!
Ik voel hier een reductie van 400 naar 20 lijntjes aankomen! :p


hehe you're welcome :P
I love the smell of petrol in the morning. Smells like ... SPEED!
Afbeelding
wim
Master in de forumwetenschappen
Master in de forumwetenschappen
Berichten: 1991
Lid geworden op: 27 dec 2007, 21:40
Locatie: Sint-Pieters-Woluwe

Re: Matlab interpolatie

Berichtdoor wim » 26 jan 2012, 13:13

Als het enkel is om te interpoleren kunt ge natuurlijk ook gewoon de Matlab-interpolatie functie gebruiken:

Code: Selecteer alles

A = [0 10 20 30];
Y = [1 2  3  4 ]; % of whatever functiewaarden ge hebt

x = 5;
y = interp1( A, Y, x ); % geeft de functiewaarde voor x met lineare interpolatie


Als het dat is wat ge wilt doen tenminste he ;)
Afbeelding
- I only wear my sunglasses at night -
Gebruikersavatar
Ruben
Doctor in de forumwetenschappen
Doctor in de forumwetenschappen
Berichten: 4848
Lid geworden op: 20 dec 2007, 21:15
Locatie: Steenhuffel

Re: Matlab interpolatie

Berichtdoor Ruben » 26 jan 2012, 14:29

wim schreef:Als het enkel is om te interpoleren kunt ge natuurlijk ook gewoon de Matlab-interpolatie functie gebruiken:

Code: Selecteer alles

A = [0 10 20 30];
Y = [1 2  3  4 ]; % of whatever functiewaarden ge hebt

x = 5;
y = interp1( A, Y, x ); % geeft de functiewaarde voor x met lineare interpolatie


Als het dat is wat ge wilt doen tenminste he ;)

uiteindelijk wel maar t probleem is dat ik een driedubbele interpollatie moet doen waarvan 1 exponentieel moet gebeuren.
Ruben - Delivering awesomeness since 1989
wim
Master in de forumwetenschappen
Master in de forumwetenschappen
Berichten: 1991
Lid geworden op: 27 dec 2007, 21:40
Locatie: Sint-Pieters-Woluwe

Re: Matlab interpolatie

Berichtdoor wim » 26 jan 2012, 14:54

Ruben schreef:
wim schreef:Als het enkel is om te interpoleren kunt ge natuurlijk ook gewoon de Matlab-interpolatie functie gebruiken:

Code: Selecteer alles

A = [0 10 20 30];
Y = [1 2  3  4 ]; % of whatever functiewaarden ge hebt

x = 5;
y = interp1( A, Y, x ); % geeft de functiewaarde voor x met lineare interpolatie


Als het dat is wat ge wilt doen tenminste he ;)

uiteindelijk wel maar t probleem is dat ik een driedubbele interpollatie moet doen waarvan 1 exponentieel moet gebeuren.

Oké dan, good luck :)
Afbeelding
- I only wear my sunglasses at night -

Terug naar “Serieuze discussies”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 2 gasten

cron