WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Addition von x bei gleichem y aus zwei Datenreihen y=f(x)

 

kina236
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.01.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2021, 15:11     Titel: Addition von x bei gleichem y aus zwei Datenreihen y=f(x)
  Antworten mit Zitat      
Hallo,

ich suche eine Funktion bzw. eine Herangehensweise für folgendes Problem:

Ich habe zwei Datenreihen mit Wertepaaren x,y gegeben und möchte die x-Werte beider Reihen bei gleichem y-Wert addieren. Leider haben die y-Werte viele Nachkommastellen. Dementsprechend existieren keine zwei exakt gleichen y-Werte und ich kann nicht einfach nach einem y-Wert in beiden Datenreihen "suchen" und deren x-Werte addieren.

Bei mathematischen Funktionen würde ich dafür die Umkehrfunktion berechnen. Die Funktion f(x)=y ist mir allerdings nicht bekannt, ich habe lediglich Wertepaare.

Wie kann ich dieses Problem in MATLAB lösen?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.01.2021, 15:17     Titel:
  Antworten mit Zitat      
Hallo,

ich würde zu einem vorgegebenen Gitter von y-Werten jeweils die x-Werte interpolieren. Diese kannst du dann addieren.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
kina236
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.01.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2021, 10:56     Titel:
  Antworten mit Zitat      
Danke für deine Antwort.

Nun habe ich festgestellt, dass meine y-Werte nicht nur von x, sondern auch von z abhängig sind, also y=f(x,z). Gesucht ist x=f(y,z).

Nehme ich da den Befehl
Code:
?

Ich habe mir schon die Hilfe zu dem Befehl angeschaut.
Verstehe ich es richtig, dass X=x, Y=z, V=y, Xq=y und Yq=z für meinen Anwendungsfall gilt?

Falls nicht, bin ich für Erklärung zu diesem oder einem anderen passenden Befehl sehr dankbar.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.01.2021, 11:04     Titel:
  Antworten mit Zitat      
Hallo,

du kannst interp2 verwenden. Es ist aber nicht sinnvoll, Xq und Yq genauso zu wählen wie X und Y. Xq muss in deinem Fall ein Gitter von x-Werten und Yq ein Gitter von z-Werten sein, für die du Daten haben möchtest.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
kina236
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.01.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2021, 12:01     Titel:
  Antworten mit Zitat      
Habe ich X und Y und Xq und Yq gleich gewählt?

Ich würde X =x und Y=z wählen, da ich sich daraus mein y ergibt. Also ist V=y (y=f(x,z).

Nun möchte ich das umdrehen und x=f(y,z) bestimmen. Dafür wähle ich ein Gitter ausx-Werten und z-Werte, für die ich mein y haben möchte, also Xq=y und Yq=z. Xq hat sich geändert von x auf y.

Kann man das so machen und kann es sein, dass X und Y sowie Xq und Yq die gleichen Dimensionen haben müssen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.01.2021, 14:32     Titel:
  Antworten mit Zitat      
Hallo,

es kann das einfachste sein, das mal mit dem konkreten Datensatz auszuprobieren und zu schauen, ob das fehlerfrei läuft und die Ergebnisse sinnvoll sind.

Es gibt verschiedene Möglichkeiten, die Daten zur Verfügung zu stellen. Das wird in der Doku von interp2 im Abschnitt "Input Arguments" detailliert beschrieben.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
kina236
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.01.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2021, 16:12     Titel:
  Antworten mit Zitat      
Ich hab's nun mal versucht zu programmieren:

Code:
[V1 n1] = meshgrid(10000:2500:55000,500:1000);
[p1i n1i] = meshgrid(0:5000,500:1000);
V1i = interp2(V1,n1,pV1AB,p1i,n1i);


pV1AB ist eine Matrix, die die p-Werte in Abhängigkeit von V (Spalten) und n (Zeilen) enthält.

Die Grenzen von p1i und n1i habe ich entsprechend den Werten von pV1AB bzw. n1 gewählt.

Es zeigt keine Fehler an, aber V1i enthält nun NANs. Zuerst dachte ich, es liegt an meinem vorgegebenem p1i-n1i-Gitter, aber die Werte kommen so in pV1AB vor.


Wo könnte der Fehler sein?


Danke.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.01.2021, 16:37     Titel:
  Antworten mit Zitat      
Hallo,

m.E. müssen bei diesem Aufruf die Werte von p1i zu V1 passen und die von n1i zu n1. Die letzteren beiden passen zusammen, die ersteren beiden nicht. Angesichts von V1 erschiene mir z.B. dies für sinnvoller:
Code:
[p1i n1i] = meshgrid(10000:10:55000,500:1000);


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
kina236
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.01.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2021, 12:19     Titel:
  Antworten mit Zitat      
Danke, mit der Änderung enthält V1i Zahlenwerte.
Allerdings sind diese m. E. nicht plausibel, was evtl. an der Vorgabe, dass die Wertebereiche von V1 und p1i gleich sein müssen, liegt. V1 und p1i repräsentieren physikalische Größen, die nie den gleichen Wertebereich haben.

Gibt es eine Möglichkeit, die Interpolation für folgendes p1i und n1i durchzuführen oder eignet sich ein anderer Befehl statt interp2 dafür?

Code:
[V1 n1] = meshgrid(10000:2500:55000,500:1000);
[p1i n1i] = meshgrid(0:5000,500:1000);
V1i = interp2(V1,n1,pV1AB,p1i,n1i);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2021, 12:25     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
V1 und p1i repräsentieren physikalische Größen, die nie den gleichen Wertebereich haben.

Dann ist der Aufruf von interp2 mit diesen Argumenten in dieser Reihenfolge fragwürdig.
Mit dem Aufruf sagst du, dass du Werte für p1i und n1i haben möchtest. Dann musst du aber auch Daten haben, die diesen Bereich abdecken. Andernfalls ist es keine Interpolation, sondern eine (m.E. recht gewagte) Extrapolation.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.