Zwei Datensätze mit unterschiedlichen Argumenten - Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Fachkräfte:
Informatiker (m/w) für den Bereich Toolkette Embedded Software
Weiterentwicklung einer MATLAB-/Simulink-Toolkette, Automatisierung der Code-Generierung mit TargetLink und Embedded Coder
cbb-Software GmbH - Stuttgart

Softwareentwickler (m/w) automatische Codegenerierung
Umsetzung, Neuprogrammierung und Weiterentwicklung in Simulink, TargetLink und C
EFS - Ingolstadt, Wolfsburg

Entwicklungsingenieur (w/m) CO2- Lasersysteme
Planung, Durchführung und Auswertung von Tests an CO₂-Hochleistungsverstärkern
TRUMPF Lasersystems for Semiconductor Manufacturing GmbH - Ditzingen

Software Entwickler Automotive Embedded (w/m)
Modelbased Softwareentwicklung für Automotive Steuergeräte
ESG Elektroniksystem- und Logistik-GmbH - Fürstenfeldbruck, Ingolstadt

Ingenieur (w/m) Qualitätssicherung im Use Case Test
Erstellung und Erweiterung von Kundenszenarien aus dem Bereich des Tests und der Entwicklung von Steuergeräten
dSPACE GmbH - Paderborn

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Zwei Datensätze mit unterschiedlichen Argumenten

 

dasjoki
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 29.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2018, 14:26     Titel: Zwei Datensätze mit unterschiedlichen Argumenten
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem. Ich habe zwei große Datensätze:

Datensatz 1: x, z
Datensatz 2: Xs, Zs

Die beiden Datensätze würde ich gern voneinander subtrahieren aber beide haben unterschiedliche Argumente (x-Werte). Für genau dieses Problem hatte ich sogar eine Lösung gefunden:

http://www.gomatlab.de/plots-vonein.....ghlight,subtrahieren.html

Ich habe das dann an meine Variablen angepasst

Code:

    X = sort([x;Xs]);           % Daten auf gemeinsames X-Raster setzen
    z_err = interp1(x, z, X);   % Messwerte auf das X-Raster anpassen
    z_cor = interp1(Xs, Zs, X); % Kreisdaten auf das X-Raster anpassen
   
    err = z_err - z_cor;
 


und es hat sogar im ersten Versuch funktioniert.

Nun habe ich exakt das gleiche Skript mit neuen Datensätzen und diesmal tritt folgender Fehler auf:

Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.

Error in interp1 (line 186)
F = griddedInterpolant(X,V,method);

Ich verstehe nicht, wo der Fehler liegt. Könnte mir jemand bitte auf die Sprünge helfen?

Beste Grüße
dasjoki
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 18.820
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 26.01.2018, 18:04     Titel:
  Antworten mit Zitat      
Hallo,

du brauchst eigentlich nur die Meldung zu übersetzen:
die Gittervektoren müssen monoton steigend sein, d.h. ein Eintrag größer als der vorherige.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 29.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 11:56     Titel:
  Antworten mit Zitat      
Das sollte doch aber mit

Code:
X = sort([x;Xs]);


nicht möglich sein, oder? Die Funktion sortiert mir doch die Werte schon aufsteigend.

Ich habe inzwischen auch die unique-Funktion genutzt, um doppelte Werte zu löschen. Auch das bringt mich nicht zum Ziel...

Viele Grüße
dasjoki
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.820
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 29.01.2018, 12:18     Titel:
  Antworten mit Zitat      
Hallo,

das X ist aufsteigend sortiert, aber nicht das x und das Xs - und darum geht es.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 29.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 13:24     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe auch testweise mal x, z, Xs und Zs sortiert. Auch dann bekomme ich weiterhin diese Fehlermeldung. Daran scheint es also nicht zu liegen.

Hast du noch eine andere Idee? Vielleicht auch einen anderen Weg, um das Ziel zu erreichen?

Viele Grüße
dasjoki
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.820
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 29.01.2018, 13:50     Titel:
  Antworten mit Zitat      
Hallo,

dann poste bitte mal ein reproduzierbares Beispiel.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 29.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2018, 11:49     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe meinen Fehler gefunden. Es lag tatsächlich an den doppelten Werte. Eigenartigerweise musste ich die unique-Funktion zwei mal ausführen, damit wirklich alle doppelten Werte gelöscht wurden.

Ich habe es aber nun so in den Griff bekommen:

Code:
%% Berechnung des Fehlers

    % x-Werte der Größe nach sortieren und z-Werte entsprechend zuordnen
    [x,I] = sort(x);
    for i = 1 : numel(z)
        z(i) = z(I(i));
    end;
       
    % doppelte x-Werte und dazugehörige z-Werte löschen
    [x, order, pos] = unique(x,'stable');
    for i = 1 : numel(x)
        z_unique(i) = z(order(i));
    end;
    z = z_unique;
   
    X = sort([x;Xs]);           % Daten auf gemeinsames X-Raster setzen
   
    z_cor = interp1(Xs, Zs, X); % Kreisdaten auf das X-Raster anpassen
    z_err = interp1(x, z, X);   % Messwerte auf das X-Raster anpassen
   
    error = z_err - z_cor;


Vielen Dank und beste Grüße
dasjoki
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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.