|
|
Daten einlesen für bestimmte Spalten |
|
mathphys |

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 15:48
Titel: Daten einlesen für bestimmte Spalten
|
 |
|
 |
|
Hallo
bis jetzt hatte ich eine Textdatei, die aus vier Spalten bestand. Die erste Spalte hatte einen Buchstaben und die drei danach Zahlen. Der Code zum einlesen war:
Von nun an habe ich Dateien, die sehr viele Spalten mehr haben, die auch anders aufgeteilt sind. In der ersten Spalte ist wieder ein Buchstabe (was wichtig ist, damit alle Zeilen ignoriert werden, wenn sie nicht mit N oder C anfangen). In der zweiten Spalte eine Information die ich hier (an dieser Stelle) nicht einlesen will und nicht benötige und Spalte drei, vier, fünf sind die Zahlen die ich einlesen will, genau wie vorher. Dahinter sind weitere Spalten, die hier jedoch auch nicht eingelesen werden sollen.
Die Frage ist also, wie ich MATLAB sage, dass nur Spalte 1,3,4,5 betrachtet werden sollen.
Das muss ich am Beispiel meines obigen Codes hinbekommen. Für Hilfe bin ich sehr dankbar.
Viele Grüsse
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 17:00
Titel:
|
 |
Hallo,
siehe in die Hilfe von textscan unter "Skipping Fields or Parts of Fields". Das Asterix ist dein Freund:
MFG
Sco
|
|
|
mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 17:16
Titel:
|
 |
So wie ich das verstehe, bedeutet %* das Auslassen einer Spalte.
Ich bekomme aber einen Fehler, wenn ich das hier setze:
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 17:23
Titel:
|
 |
Hallo,
also mehr als dir die Textstelle in der Hilfe UND ein Beispiel anzugeben kann ich nicht tun... Hättest du dir das Beispiel mal genau angeschaut, hättest du festgestellt, dass du trotzdem noch den Datentyp mit angeben muss. Also statt
MFG
Sco
|
|
|
mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 17:31
Titel:
|
 |
Mit %*s bekomme ich aber trotzdem einen Fehler und zwar kritisiert er dann
Der Code ist
Meine Zweite Spalte die ich nicht will beinhaltet wie gesagt aber Zahlen. Wäre %*s nicht für ein Buchstabe?
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 17:49
Titel:
|
 |
Hallo,
naja das die 2. Spalte eine Zahl ist kann ich ja nicht wissen, wenn du es nicht explizit angibst (oder ich habe es überlesen, dann sorry) und ein wenig selber mitdenken ist doch auch nicht zuviel verlangt, oder? Wenn es eine Zahl ist dann musst du natürlich das "s" durch ein "d" oder "f" oder was auch immer du möchtest ersetzen.
Ich hatte meine Antwort auch nur auf das Herauslassen der Spalte bezogen und den Rest deines Codes nicht weiter betrachtet. Schau dir dochcmal "data" an der Fehlerstelle im Debugger an und dann wirst du denke ich sehen warum der Fehler auftaucht.
MFG
Sco
|
|
|
mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 17:58
Titel:
|
 |
Es wird mir nicht angezeigt was der Fehler ist, sondern es wird nur das gesagt, was ich oben zitiert habe.
Ich denke mit so gut ich kann! Ich bin noch immer ein totaler Neuling in der Programmierwelt, sonst würde ich solche Fragen wohl nicht stellen und wenn ich dann etwas nicht erkenne, weil ich nicht auf Erfahrung zurückgreifen kann, dann wirf mir nicht mangelndes mitdenken vor...
data(:,1)=[] bedeutet doch, dass ich die erste Spalte lösche. Das soll jetzt ja auch sein, weil die erste Spalte die Buchstaben sind, die benötigt wurden um zu charakterisieren, welche Zeilen genutzt werden und welche nicht.
Ich weiss nicht wo das Problem liegt
(Im übrigen steht in der Eingangsfrage, dass Spalte zwei eine nicht benötigte Zahl ist, aber kein Problem)
Gruß
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 18:21
Titel:
|
 |
Hallo,
bitte nochmal den gesamten Code und am besten auch ein Beispiel der Datei angeben. Vielleicht seh ich's ja nur nicht, aber zu sagen, dass MATLAB "etwas kritisiert" ist für mich kein vernünftiges Zitat der Fehlermeldung
Grüße,
Harald
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 18:37
Titel:
|
 |
Hallo,
entschuldigung ich wollte dich natürlich nicht persönlich angreifen, falls das so rüberkam.
Also dein Problem muss an deiner Datei liegen, da dein Code mit meiner Beispieldatei funktioniert (siehe Anhang):
MFG
Sco
Beschreibung: |
|
 Download |
Dateiname: |
Datei.txt |
Dateigröße: |
43 Bytes |
Heruntergeladen: |
350 mal |
|
|
|
mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 20:15
Titel:
|
 |
Die Fehlermeldung die jetzt angegeben wird ist:
Der Code von Sco ist identisch mit meinem, daher ja, es muss an meiner Datei liegen?
Ein Beispiel des Inhalts habe ich hier.
Beim hochladen kam vom Forum das Fehler, dass .dat Dateien nicht hoch geladen werden dürfen. Daher hier als Textdatei:
Gruß
Beschreibung: |
|
 Download |
Dateiname: |
Beispiel.txt |
Dateigröße: |
704 Bytes |
Heruntergeladen: |
355 mal |
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 20:42
Titel:
|
 |
Hallo,
das ist genau was ich in meinem vorherigen Postings meinte. Wenn du den Debugger Modus genutzt und dir deine "daten" an der Stelle:
angeschaut hättest, dann hättest du gemerkt, dass "data" an dieser Stelle leer ist. Daher auch der Fehler von Matlab. Das Problem sind Leerzeichen vor deinem ersten Buchstaben, so dass dein Suche nach den Buchstaben "N" oder "C" immer fehlschlägt und somit auch der textscan Befehl nie aufgerufen wird. Ändere einfach die Zeile mit "fgetl" folgendermassen um alle Leerzeichen am Begin und Ende zu entfernen:
So nun sollte es aber klappen .
PS: und wie Harald schon sagte ist eine genaue Angabe der Fehlermeldung ist sehr hilfreich, schon dadurch wusste ich nämlich, dass data leer sein muss und das wohl der textscan Befehl gar nicht aufgerufen wird.
MFG
Sco
|
|
|
mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 20:49
Titel:
|
 |
Bedeutet "Debugger" nicht der Fehler der im MATLAB Fenster ausgegeben wird?
Erkläre mir bitte was du meinst. Ich kenne das nicht.
Oh Gott, was ist jetzt passiert?
Mein Code und das Ergebnis:
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 21:07
Titel:
|
 |
Hallo,
wenn du deinen Code in eine Funktion schreibst und diese abspeicherts dann kannst du im Editor an der linken Seite rote Punkte setzen, wo der Code anhalten soll. Dann kannst du dir den Inhalt der bis dahin erzeugten Variablen anschauen. Ansonsten bitte einfach mal googeln.
Der Fehler besagt das die Dimensionen der Zellen in "data" nicht gleich sind. Du hasst ja 4x1 und 3x1 Zellen mit doubles. Deshalb kannst du cell2mat nicht direkt auf die ganze Variable "data" anwenden, sondern musst dies einzeln für jede Zelle machen. Eine Lösung wäre z.B. dies:
MFG
Sco
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 21:08
Titel:
|
 |
Hallo,
das Problem waren die darauffolgenden Spalten. Die einfachste Möglichkeit ist, das Einleseformat nur einmal anzuwenden:
Grüße,
Harald
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 06.08.2011, 21:11
Titel:
|
 |
Mit einem Debugger kann man das Programm an einer beliebigen Stelle anhalten, in dem man einen Breakpoint setzt (Linksklick auf den - neben der Zeilennummer), um sich dann die Zwischenergebnisse anzuschauen. Diese liegen ebenfalls im Workspace. Am Breakpoint wird das Programm dann angehalten, mit allen bisherigen Daten und du kannst dann mit F10 im Schrittbetrieb fortfahren. So kann man relativ schnell Fehler im Programm finden.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|