Der Filter funktioniert. Allerdings werden die Werte folgendermaßen im Editor angezeigt (gewünscht ist die obere Variante, aufgrund einer weiteren Datenverarbeitung):
Hallo,
ich habe das Programm umgeschrieben und den strncmp- und sccanf-Befehl genommen. Die Ergbenisse sollten nun als string ausgegeben werden.
Meinem eigentlichen Ziel bin einen Schritt näher gekommen...
Das eigentliche Problem bleibt jedoch weiter bestehen; Die Ergebnisse werden nacheinander, separat ausgeworfen.
Ich habe bereits vermutet, dass der strncmp- und sscanf-Befehl außerhalb der Schleife laufen muss, was sich als nicht falsch erwiesen hat. Dort kommt eine Fehlermeldung.
auslesen = [messung_t{1:4}]% hier wir jede Zeile einzel dargestellt und weiterverarbeitet
data_x=(messung_t{2}); % Umrechnen der Koordinaten in Dezimalkoordinaten
data_dez_x=(rem(data_x,1e3)/600+ floor(rem(data_x,1e5)/1e3))/60+ floor(data_x/1e5)
data_y=(messung_t{3}); % Umrechnen der Koordinaten in Dezimalkoordinaten
data_dez_y=(rem(data_y,1e3)/600+ floor(rem(data_y,1e5)/1e3))/60+ floor(data_y/1e5)
% grafische Darstellung der x- und y-Koordinaten...
Dies hat bestens funktioniert, allerdings wurden alle Zeilen ausgelesen...
Für die Auswertung dürfen aber nur die Zeilen (Daten) mit dem Anfangsbuchstaben 'B' benutzt werden.
Die Funktion fprintf(...) gibt keinen String aus der anschließend weiterverarbeitet werden kann, laut Dokumentation. Daraufhin wurde die .txt-Datei mit fgetl(fid) ausgelesen mit strncmp(xyz) gefiltert und mit A=sscanf(xyz) entsprechend formatiert.
mit dieser Funktion wurde die Ergebnisse einzeln ausgegeben und können nicht mit folgenden Funktionen weiterverarbeitet werden:
Code:
data_x=(messung_t{2}); % Umrechnen der Koordinaten in Dezimalkoordinaten
data_dez_x=(rem(data_x,1e3)/600+ floor(rem(data_x,1e5)/1e3))/60+ floor(data_x/1e5)
data_y=(messung_t{3}); % Umrechnen der Koordinaten in Dezimalkoordinaten
data_dez_y=(rem(data_y,1e3)/600+ floor(rem(data_y,1e5)/1e3))/60+ floor(data_y/1e5)
Ich formuliere die Frage nochmal anders: Welches Problem ist nun noch ungelöst? Welche Daten (Typ und Dimension) möchtest Du wohin und in welchem Format ausgeben?
FPRINTF schreib einen String in ein File oder ins Command-Window. SPRINTF schreibt in einen String.
B 1106 5134505 1231382 215
B 1110 5134505 1231382 600
B 1122 5134505 1231382 1234
B 1130 5134505 1231382 1330
Die Werte sollen in einem String [nrows] geschrieben werden (sprintf)
Hierbei sollen die Daten nach B gefiltert werden (Die Buchstaben müssen nicht angezeigt werden). Ich gehe davon aus, dass der Befehl strncmp und sscanf genutzt werden muss.
Nach meiner Programmierung habe ich immer diese Ausgaben (nicht gewollt):
ans =
B 1106 5134505 1231382 215
ans =
B 1110 5134505 1231382 600
ans =
.....
Mir wird es immer noch nicht klar: Was bedeutet "Ausgabe" - in eine Variable, ins Command Window oder in ein File?
Ich füge mal eine Ausgabe ins Command-Window und in ein Cell-String in Deinen Code ein:
Code:
[Dateiname, Pfad] = uigetfile('*.txt', 'Bitte Datei auswählen!');
fid = fopen(fullfile(Pfad,Dateiname), 'r');
C = cell(1, 1000);
iC = 0;
Bemerkung: "if s==-1" funktioniert zwar, ist aber nicht effizient oder klar, falls s ein String ist.
Gruß, Jan
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.