Interpolation mehrere Werte < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
habe eine Drehzahl-Drehmoment-Kurve gegeben. Abgespeichert in einer Matrix (300 111;800 109;1000 125;2000 141;3000 169;4000 185;5000 198;6500 188). Erste Spalte ist Drehzahl, 2. Drehmoment.
Nun soll ich für beliebige Drehmomente die Drehzahl interpolieren. Gelöst hab ich das mit interp1. allerdings gibt matlab mir immer nur eine lösung aus. bei einem Drehmoment von aber zum Beispiel 190 hätte ja eigentlich sowohl eine drehzahl von 4400 als auch von 6200. interp1 gibt mir nur die 6200 aus. was kann ich tun?
Vielen Dank im Voraus.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:02 Mo 21.04.2014 | Autor: | leduart |
Halloi
wie kommst du auf die 4200 aus den beschriebenen Daten?
aber wie bildest du denn die Interpolation, genau? du musst doch matlabsagen, was es tun soll:
Gruss leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 07:53 Di 22.04.2014 | Autor: | polari500 |
Der Wert bei 4... war ein schätzwert von mir. Es ist mir nur darum gegangen, dass ja noch ein 2. Wert existiert.
Mein matlabbefehl sieht folgendermaßen aus:
dn=[300 111;800 109;1000 125;2000 141;3000 169;4000 185;5000 198;6500 188];
M=input('M:');
n=interp1(dn(:,2),dn(:,1),M,'linear')
Gebe ich jetzt für M zb.:190 ein kommt als Antwort nur der Wert bei 6200.
obwohl ja zwischen 4000 und 5000 umdrehungen eben auch noch ein Wert wäre.
Vielen Dank schon mal
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:00 Di 22.04.2014 | Autor: | leduart |
Hallo
zw. 4000 und 5000 ist M zwischen 169 und 185 also nie 190. vielleicht weisst du, dass da noch ne 190 liegt, ich und matlab nicht.
Gruß leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:38 Di 22.04.2014 | Autor: | polari500 |
Glaub da hast du dich verlesen.
zwischen 4000 und 5000 umdrehungen ist M zwischen 185 und 198. also würde da die 190 drin liegen genauso wie zwischen 5000 und 6500, dort liegt M zwischen 198 und 188.
Hast du vielleicht eine Matlabfunktion parat die beide werte erkennt?
Danke
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:29 Di 22.04.2014 | Autor: | leduart |
Hallo
ich hab kein funktionierendes matlab, hast du denn die Dokumentation von interpl nachgesehen?
mit n= kann er sicher nur einen Wert ausgeben
Gruß leduart
|
|
|
|
|
Ja habe die interp1 durchgelesen, werde aber leider nicht schlau daraus.
Warum kann er mir für n= nur einen Wert ausgeben? könnte mir doch auch einen Vektor ausgeben?
Nur der Vollständigkeit halber, werde mein Problem auch noch im Matlab forum posten.
Vielen Dank
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:49 Mi 23.04.2014 | Autor: | leduart |
Hallo
wenn deine x(y) keine monotone fkt ist, kann man z.b in der nähe eines minimums oder maximums ja auch gar nicht interpolieren. deshalb kannst du nur deine Tabelle in 2 (oder mehr) monotone Teile trennen und dann deine Interpolation machen.
oder du schreibst selbst ein kleines Programm, allerdings mit dem wissen oben, dass es in der Nähe des Umkehrpunktes falsche Werte liefert.
Gruß leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:50 Di 22.04.2014 | Autor: | Marcel |
Hallo Leduart,
> Hallo
> ich hab kein funktionierendes matlab,
octave tut's (meist) fast genauso gut - falls Du mal Matlabähnlich arbieten
willst, Dir aber die Kosten dafür nicht antun willst.
Gruß,
Marcel
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:33 Mi 23.04.2014 | Autor: | leduart |
Hallo Marcel
Danke
Gruß leduart
|
|
|
|
|
Hallo polari500
Ich habe bei Matlab nachgeschaut und gefunden:
yi = interp1(x,Y,xi,method) interpolates using alternative methods:
* 'nearest' for nearest neighbor interpolation
* 'linear' for linear interpolation
* 'spline' for cubic spline interpolation
* 'cubic' for cubic interpolation
All the interpolation methods require that x be monotonic.
Bei deiner Verwendung des Befehls:
Mein matlabbefehl sieht folgendermaßen aus:
dn=[300 111;800 109;1000 125;2000 141;3000 169;4000 185;5000 198;6500 188];
M=input('M:');
n=interp1(dn(:,2),dn(:,1),M,'linear')
ist aber die Folge x , also im Klartext dn(:,2) nicht monoton.
Da du also diese Voraussetzung für den Matlab Befehl
nicht einhältst, kannst du auch nicht erwarten, mehr
als einen Interpolationswert zu erhalten.
LG , Al-Chw.
Als Ausweg könntest du ja z.B. in jedem einzelnen
Teilintervall zwischen den gegebenen Datenpunkten
prüfen, ob es da einen möglichen Zwischenwert gibt !
|
|
|
|