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

X von Y Wert ermitteln, versch. Steigungen, Y zw. den Werte

 

equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 20.07.2017, 16:05     Titel: X von Y Wert ermitteln, versch. Steigungen, Y zw. den Werte
  Antworten mit Zitat      
Hallo zusammen,

kurz zu meinem Problem, ich habe Werte auf verschiedenen X-Skalierungen (1x Zeit 1x Weg). Jedoch muss ich verschiedene Kurven von Zeit auf Weg skalieren. Die Umrechnung ist nur auf einem Weg möglich, da ich nur eine Kurve in beiden Skalierungen besitze.
In der Zeit-Skalierung habe ich von dieser Kurve 6 Punkte(s_Z), in der Weg Skalierung habe ich hierzu sehr viele Messwerte (s). Hierzu habe ich die einzelnen Steigungen berechnet (Delta(s)/Delta(x))


s_Z=[1.923;3.28; 7.733; 8.75; 9.999;15.756]
MA=[x s Steigung]
    0 0 0
    0.0083 0.7870 94.4415
    0.0164 1.5780 94.4415
    0.0247 2.3349 94.4551
    0.0328 3.0969 94.5929
    0.0411 3.8847 94.5366
    ...


Nun zur Aufgabe: Ich möchte für alle s_Z den exakten x Wert bestimmen.
Problem: 1. Feststellen zwischen welchen s-Werten s_Z liegt (automatisch alle s_Z-Werte)
2. X-Wert bis zum Y Wert bestimmen

Meine Ansätze:
zu 1.
Code:
Zeilen=find(M(:,2)<1.923) %findet zwar heraus damit die erste 3 kleiner sind aber funktioniert nicht automatisch auf alle Werte von s_Z


zu 2.
Code:
xsumme= MA(max(Zeilen),1)+((1.923-MA(max(Zeilen),2))/(MA(max(Zeilen),3)))            % hier das selbe Problem mit dem automatisieren, xsumme müsste stimmen
[/code]
_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

auf den ersten Blick würde ich sagen: interpolieren.

Code:
x_Z = interp1(s, x, s_Z);


Allerdings bekommst du damit interpolierte Werte. Wenn du exakte x-Werte haben möchtest, müsstest du sagen, nach welcher Vorschrift diese bestimmt werden sollen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
equi
Themenstarter

Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 20.07.2017, 22:04     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine mega schnelle Antwort Smile

was meinst du mit "welcher Vorschrift"? Smile

Hab es glaub ein bisschen schlecht formuliert.
Die exakten X-Werte bekomme ich ja durch:

Code:
xsumme= MA(max(Zeilen),1)+((1.923-MA(max(Zeilen),2))/(MA(max(Zeilen),3)))


nur damit hier der Wert s_Z(1,1)=1.923 fest steht.

Ich möchte damit in der Matrix nach jedem Wert von s_Z gesucht wird.

Code:
Zeilen=find(M(:,2)<s_Z)

Code:
xsumme= MA(max(Zeilen),1)+((s_Z-MA(max(Zeilen),2))/(MA(max(Zeilen),3)))


also quasi damit er erst die beiden Codes mit s_Z(1,1) durchläuft, dann s_Z(2,1) usw... und mir dann einen vektor mit den jeweiligen ergebnissen liefert, sprich damit xsumme dann auch 6 Werte enthält.

Ich glaube meine 2 Probleme sind mit den Codes behoben nur die "automatisierung" klappt nicht Very Happy

EDIT:
Also so einfach s_Z wie in den 2 Codes einsetzen geht nicht, da kommt "Matrix dimensions must agree."
_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
equi
Themenstarter

Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 20.07.2017, 22:22     Titel:
  Antworten mit Zitat      
Also quasi:

Zeilen=find(M(:,2)<s_Z(1,1))

Zeilen=find(M(:,2)<s_Z(2,1))

Zeilen=find(M(:,2)<s_Z(3,1))

und für den anderen Code auch, nur damit er halt automatisch erkennt wie lange s_Z ist und jeden Wert einsetzt, da die möglichkeit besteht damit für s_Z bei anderen Messungen mehr Punkte entstehen
_________________

Grüße Equi Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du willst ja anscheinend Geradenstücke zwischen benachbarten Punkten durchlegen. Genau das ist aber lineare Interpolation.

Hast du also meinen Vorschlag mit interp1 mal versucht? Das lässt sich problemlos für das ganze s_Z auf einmal ausführen. Bei deinem Ansatz musst du eben zur Not eine for-Schleife verwenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
equi
Themenstarter

Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 20.07.2017, 23:07     Titel:
  Antworten mit Zitat      
Hey,

ah, natürlich, lineare Interpolation ist ja nichts anderes wie einen Wert über die Steigung zu berechnen Very Happy

Jetzt machts klick bei mir Smile

Und ja dein Vorschlag passt dann natürlich Smile

Vielen Dank für deine Hilfe und auch die Erklärung Smile
_________________

Grüße Equi Smile
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.