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

Anzahl der Zeilen ohne die ganze Datei einzulesen?

 

mathphys
Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 07.08.2011, 14:48     Titel: Anzahl der Zeilen ohne die ganze Datei einzulesen?
  Antworten mit Zitat      
Hey

ich möchte die Anzahl an Zeilen aus einer Text Datei wissen. Ich könnte nun z.B. die Datei einlesen und die Dimension abfragen, doch das ist doch ein viel zu großer Rechenaufwand, wenn ich nur wissen will, wie viele Zeilen sie hat.

Gibt es da einen besseren weg?

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

eine Möglichkeit wäre, die Datei als Binärdatei einzulesen und nach den Zeilenvorschüben zu suchen, z.B.

Code:
fid = fopen('Beispiel.txt');
A = fread(fid);
fclose(fid);
nnz(A == 10)

Anmerkung: 10 ist der ASCII-Code für einen Zeilenvorschub.

Die andere Frage ist jedoch: wozu benötigst du diese Information überhaupt?

Grüße,
Harald
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: 07.08.2011, 16:53     Titel: Re: Anzahl der Zeilen ohne die ganze Datei einzulesen?
  Antworten mit Zitat      
Hallo mathphys,

Wenn alle Zeilen die geliche Breite haben, kannst Du eine Zeile einlesen und die Länge des Files per DIR erhalten.
Wenn die Zeilen unterschiedliche Länge haben, muss man aber natürlich die ganze Datei einlesen - alles andere wäre ja auch magisch. Am schnellsten geht das wohl so:
Code:
FID = fopen(FileName, 'r');
if FID < 0, error('Cannot open %s', FileName); end
Dummy = fread(FID, Inf, '*uint8');
fclose(FID);
nLine = sum(Dummy == uint8(10));

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 07.08.2011, 16:59     Titel:
  Antworten mit Zitat      
Danke für eure Hilfe. Funktioniert wunderbar.

Ich wollte die Zeilenzahl deshalb, weil diese später in eine for Schleife eingebaut werden muss.

Dort werde ich noch viele große Datenmengen haben, welche unterschiedliche Zeilenlänge haben und die Zeilenlänge der Datei hier dient dazu bei der viel längeren anderen Datei zu sagen, wie viele Daten genommen werden sollen.

Ihr seht das ganze ist schlimm. Z.B. war die Odyssee mit dem Sechseck (ihr erinnert euch bestimmt) auch nur ein kleiner Teil des ganzen Programms.

Das eigentliche Problem an der ganze Sache ist eigentlich (um ganz kurz etwas zu jammern), dass ich ein sehr großes komplexes Programm schreiben soll, unter massivem Zeitdruck, ohne das ich programmieren kann und es parallel lernen muss.

Das ganze wäre viel schöner, wenn ich diese typischen kleinen Hallo Welt Programme schreiben könnte um erstmal zu lernen wie man programmiert, bevor so große Projekte kommen.

Naja, man kann nicht alles haben. Genug gejammert.

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wenn du eine große Datei zeilenweise verarbeiten willst, hilft oft auch
Code:

[solange das Ende der Datei nicht erreicht ist, mache...]

Zitat:
Das eigentliche Problem an der ganze Sache ist eigentlich (um ganz kurz etwas zu jammern), dass ich ein sehr großes komplexes Programm schreiben soll, unter massivem Zeitdruck, ohne das ich programmieren kann und es parallel lernen muss.

Um so wichtiger wäre es, sich am Anfang einmal intensiv und systematisch einzuarbeiten bzw. einarbeiten zu lassen.

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 07.08.2011, 17:07     Titel:
  Antworten mit Zitat      
Ich stimme dir so etwas von zu. Erkläre das meinem Chef Sad
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.08.2011, 17:10     Titel:
  Antworten mit Zitat      
Das kann ich dir leider nicht abnehmen.

Grüße,
Harald
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: 07.08.2011, 17:23     Titel:
  Antworten mit Zitat      
Hallo Mathphys,

Die Aufgabe des Programmierens besteht zu 90% daraus, das probleme in kleine trivial lösbare Teile zu gliedern. So sind ja die einzelnen seriellen Kommandos nichts anderes als eine "Atomisierung" des Problems. Wenn man das konsequent macht, bleiben nur Teilaufgaben von der Komplexität eines Hello-World übrig.
Schwierig ist dabei aber, dass diese Aufteilung nicht eindeutig ist. So kann man seine Daten in beliebigen Strukturen abspeichern, aber fast alle sind sehr inneffizient. So ist z.B. das Verwenden von Links im Internetbrowser viel besser als das Internet auszudrucken und zwischen den Seiten zu blättern.

Die restlichen 10% sind übrigens das Debuggen, welches im Allgemeinen 90% der Arbeitszeit ausmacht. Deswegen ist gleich nach dem Hello-World eine ausführliche Beschäftigung mit dem Debugger sinnvoll.

Ich würde mal davon ausgehen, dass Dein Chef schon einen gewissen Schimmer davon hat, was er macht. Möglicherweise wäre es die beste Vorgehensweise Deinem Chef mitzuteilen, dass die Komplexität der Aufgabe eine effiziente Bearbeitung behindert und ihn um Rat fragen. Zur Teamarbeit gehört ja auch, sich rechtzeitig Hilfe zu holen.

Gruß, Jan
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.