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

Zwei Vektoren unterschiedlicher Länge kombinieren

 

mr90

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2013, 15:01     Titel: Zwei Vektoren unterschiedlicher Länge kombinieren
  Antworten mit Zitat      
Liebe Communtiy!

Ich wende mich mal wieder mit einem meiner Probleme an euch!

Ich habe zwei Datensätze unterschiedlicher Länge. Dabei handelt es sich um Messwerte mit ca. 270000 und 1000000 Einträgen. Die Messwerte wurden über die Zeit aufgenommen. Der absolute Zeitabschnitt ist dabei der gleiche, jedoch wurde der eine Messwert feiner aufgenommen.

Nun möchte ich, den einen Messwert über den anderen auftragen und nicht über die Zeit.
Dazu suche ich die zueinander passenden Zeiten und suche mir anschließend den richigen Messwert heraus.

Das ganze habe ich derzeit folgendermaßen umgesetzt:

Code:

for i = 1:length(Messwert1) %Für alle Messwerte
    [Wert, Zeile] = min(abs(Zeit2 - Zeit1(i))); %Suche die entsprechende Zeit
    Weg(Zeile) = [Messwert2(Zeile)]; %Speichere den dazu passenden Wert
end
 


Leider ist das Programm, in dieser Ausführung sehr langsam. Gibt es vl. eine Methode ohne der for-Schleife die schneller geht?

Vielen Dank schon mal im vorraus!

mr90


Harald
Forum-Meister

Forum-Meister


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

ich würde interp1 verwenden, um beide Signale auf eine Zeitachse zu bringen. Was du wohl machen willst:
Code:
Signal1mod = interp1(Zeit1, Signal1, Zeit2)


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2013, 16:11     Titel:
  Antworten mit Zitat      
Danke für die Antwort!

Ich hab es ausprobiert und es funktioniert wunderbar und geht blitzschnell.

Leider ist es aber bei dieser Methode so, dass ich die Messdaten, welche weniger fein aufgenommen wurden, durch Interpoliation erhöhe. Es wäre aber besser wenn ich aus dem anderen Datensatz, die überschüssigen Daten entfernen könnte.
 
Harald
Forum-Meister

Forum-Meister


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

dann vertausche die Datensätze im Aufruf?

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2013, 09:49     Titel:
  Antworten mit Zitat      
Leider habe ich dieses Problem jetzt eine Woche liegen lassen müssen...

Ich habe versucht die Eingabedaten zu vertauschen und habe darauf hin folgenden Fehler erhalten:

Code:

??? Error using ==> interp1 at 261
The values of X should be distinct.

Error in ==> Daten_einlesen at 45
test = interp1(E0_CNT2_Raw_Count_x, E0_CNT2_Raw_Count, Time);
 


Nach kurzer Recherche scheint es so, als das in X keine Werte mehrfach vorkommen dürfen. Das ist jedoch der Fall, da durchaus der gleiche Wert gemessen werden kann.

Habe ich den Fehler richtig interpretiert? Und gibt es noch andere Möglichkeiten für mein Problem?
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 07.03.2013, 12:26     Titel:
  Antworten mit Zitat      
Hi,

Spricht etwas dagegen, doppelte Zeitwerte rauszufiltern?

Mit
Code:
kann man bspw feststellen, ob (und wo) aufeinander folgende Matrixelemente gleich groß sind.

Grüße,
Seban
Private Nachricht senden Benutzer-Profile anzeigen
 
mr90

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2013, 12:43     Titel:
  Antworten mit Zitat      
Danke!
Bin über meine eigene Dummheit gestolpert. Dachte es hängt an den gemessenen Werten und nicht an den Zeitwerten.

Hab die Zeitwerte jetzt rausgenommen und es funktioniert jetzt einwandfrei.

Vielen Dank für die guten Tipps!
 
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 - 2025 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.