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

Vergleich von zwei Cell Arrays

 

Simplon
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 09.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2011, 16:06     Titel: Vergleich von zwei Cell Arrays
  Antworten mit Zitat      
Hallo zusammen,

bin neu hier im Forum und bräuchte mal ein paar Ideen von euch!

Folgendes Problem:
Habe einen Datensatz mit 17 unterschiedlichen Werten pro Sekunde. Allerdings habe ich ein paar Datenlücken, durch den Ausfall meines Messsystems. Nach dem Neustart geht das File dann wieder weiter. Deswegen sieht ein Datenfile folgendermaßen aus:

datenfile: <83924x17 cell>

Mein Ziel ist es jetzt einen lückenlosen Zeitstempel zu haben. Also
datenfile_komplett = <86400x17 cell>
(86400 = Anzahl Sekunden pro Tag)
In der ersten Spalte des cell-Array "datenfile_komplett" habe ich den gleichen Zeitstempel, wie im lückenbehafteten Array.

Code:

datenfile(1,1)
ans =

    '2011-06-28 00:00:00.000'
 


Code:

datenfile_komplett(1,1)
ans =

    '2011-06-28 00:00:00.000'
 


Ich möchte jetzt aus dem "datenfile" die Werte mit dem gleichen Zeitstempel in das neue "datenfile_komplett" kopieren und dort wo Lücken sind, NaN schreiben. Das ist sehr verwirrend, ich hoffe, ihr könnt mir noch folgen?!
Mein Code dafür sieht folgendermaßen aus:
Code:

for i = 1:length(datenfile_komplett)
   
   index = cellfun(@(idx) ~isempty(idx), strfind(datenfile(:,1),...
       char(datenfile_komplett(i,1))));
   datenfile_komplett(i,2:end) = datenfile(index,2:end);
   
end;
 

Es funktioniert auch, aber es ist so unglaublich langsam. Kann man das ganze ohne for-Schleife machen und nur indexieren?

Ich hoffe, auf Eure Hilfe!

Viele Grüße
Jörg, alias Simplon
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.09.2011, 17:54     Titel: Re: Vergleich von zwei Cell Arrays
  Antworten mit Zitat      
Hallo Simplon,

Deine Methode zum Suchen eines Strings in einem Cell Strings ist suboptimal. Dies sollte schneller sein - sieht auch irgendwie einfacher aus:
Code:

toSearch = datenfile(:,1);  % Nur einmal erzeugen!
for i = 1:length(datenfile_komplett)
    index = strcmp(datenfile_komplett{i,1}, toSearch);
    datenfile_komplett(i, 2:17) = datenfile(index, 2:17);
end

Ohne FOR-Schleife ginge es so, wenn die Daten alle sortiert sind:
Code:
index = ismember(datenfile_komplett(:, 1), datenfile(:, 1));
datenfile_komplett(index, 2:17) = datenfile(:, 2:17);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Simplon
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 09.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2011, 18:07     Titel:
  Antworten mit Zitat      
Hey Jan,

Vielen Dank für deine Hilfe! Das mit dem ismember Befehl hab ich auch probiert, aber ich Held hab das index-Feld falsch kopiert gehabt und deswegen hat es nicht funktioniert. Blöd gelaufen, aber dank deinem Code läuft das Ganze jetzt 1 Millionen mal schneller! Vielen, lieben Dank!

Gruß Jörg
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 - 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.