Verfasst am: 04.07.2011, 10:59
Titel: Problem mit 'find'-Funktion
Hallo,
ich habe ein etwas seltsames Problem, ich würd' mich freuen, wenn jemand eine zündende Idee hätte...
Ich habe ein Programm geschrieben, in dem Messwerte (in Abh. von der Zeit t_mess) mit berechneten Werten (ODE-Solver, Zeit: t_ber) verglichen werden sollen. Damit ich identische Zeiten miteinander vergleichen kann, nutze ich den Befehl 'find' um gleiche Zeitpunkte zu finden. Hier der Auszug...
Code:
for i = 1:Anzahl_Werte
% Suchen von ident. Zeiten (t_mess == t_ber) [t_row, t_col] = find(Messdaten(i,2) == T_ber(:,1));
% Ein Delta_Ci ist die quadrierte Abweichung der % Konzentrationen einer Spezies bei einer Zeit t_ber == t_mess
Delta_C_1O = (Messdaten(i,5) - Y_ber(t_row,1))^2; % 1O
Delta_C_2O = (Messdaten(i,8) - Y_ber(t_row,2))^2; % 2O ... end
'find' liefert dann den Index für Zeile und Spalte, in dem der identische Wert gefunden wurde. Das Ganze soll mit 10 Werten (t) passieren. Das Programm funktioniert auch bis i=8. Dann steigt das Programm aus, weil kein passendens Element gefunden wird. 'find' liefert da nur [] als Ergebnis Das seltsame ist, dass die gemessenen Werte für die Zeit vorher gerundet werden, damit sie auch gefunden werden können. Hat jemand eine Idee woran es noch liegen könnte?
Du nimmst doch von Messdaten aus der 2. Spalte (ich nehme an, dass hier t_mess steht) ein bestimmten Zeitpunkt, nämlich den i. Nun suchst du in T_ber diesen Zeitpunkt. Also muss die Abfrage in find() genau anders herum sein
Du nimmst doch von Messdaten aus der 2. Spalte (ich nehme an, dass hier t_mess steht) ein bestimmten Zeitpunkt, nämlich den i. Nun suchst du in T_ber diesen Zeitpunkt. Also muss die Abfrage in find() genau anders herum sein
nach einer recht kurzen Nacht wird das Ganze noch komplizierter... Ich habe mehrere Versuche, die ausgewertet werden sollen. Der Fehler, den ich beschrieben habe trat nur beim ersten Versuch auf, der eingelesen wurde. Jetzt habe ich "aus Spass" noch vor diesem einen "Dummy-Versuch" eingefügt (alle Werte = 0) und siehe da, das Programm läuft durch.... ! I'm very confused....
Hast du mal mit dem Debugger geschaut, was in dem 8. Durchgang passiert, als die Zeit von Messdaten(i) nicht in T_ber gefunden wurde? D.h. welche Zeit ist das Suchkriterium?
Hast du mal mit dem Debugger geschaut, was in dem 8. Durchgang passiert, als die Zeit von Messdaten(i) nicht in T_ber gefunden wurde? D.h. welche Zeit ist das Suchkriterium?
Ja, habe ich. Es wird einfach ein ein "leerer" Wert ausgegeben. Vorher wird korrekt bis 8 ...
Aber hast du mal den 8. Zeitwert deiner Messung genommen und selber in T_ber geschaut, ob es den auch wirklich gibt?
Einstellungen und Berechtigungen
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
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.