|
|
| mathphys |

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.10.2011, 16:46
Titel: Spalten tauschen
|
 |
Hallo
ich bekomme es trotz vieler Versuche nicht hin:
Ich habe eine Datei im Format .xyz und diese hat vier Spalten und m Zeilen. Die ersten drei Spalten sind längere Kommazahlen (die nicht weiter gerundet oder gekürzt werden sollen) und Spalte vier ist ein Textzeichen.
Ich will die Spalte vier und eins miteinander tauschen.
Wie mache ich das?
Hier ein kleiner Auszug meiner Daten. Leider beginnt die Datei auch mit Leerzeichen
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
|
|
| eupho |

Forum-Meister
|
 |
Beiträge: 777
|
 |
|
 |
Anmeldedatum: 07.01.09
|
 |
|
 |
Wohnort: Marburg
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 16.10.2011, 17:13
Titel:
|
 |
|
Was hast du denn schon ausprobiert? Was klappt nicht? Welche Fehlermeldungen tauchen auf?
|
|
|
|
| mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.10.2011, 20:40
Titel:
|
 |
Hi,
das ist mein Code bis jetzt:
Als Ausgabe erhalte ich meine Daten eingelesen im Command Window.
Ich will sie erstens als Matrix speichern und ich will die letzte Spalte an der Stelle der ersten Spalte haben (Siehe meine Beispiel Daten oben).
Die Frage ist nun, wie ich das in eine Matrix wandle.
Gruß
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.10.2011, 20:53
Titel:
|
 |
Hallo,
du machst dir das Leben unnötig schwer, weil du ja aus den Zeilen doch wieder die Informationen extrahieren musst. Wenn du TEXTSCAN verwendest, wäre das deutlich einfacher.
Grüße,
Harald
|
|
|
|
| mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.10.2011, 06:33
Titel:
|
 |
Hallo Harald,
danke für den Tipp. Ich werde nachher textscan versuchen und sehen ob ich es schaffe. Ich melde mich dann wieder.
Gruß
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
| mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.10.2011, 17:40
Titel:
|
 |
Funktioniert leider nicht. Was muss abgeändert werden?
Grüsse
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.10.2011, 18:22
Titel:
|
 |
Hallo mathphys,
nach 127 Beiträgen müsste doch eines klar sein: wenn etwas nicht funktioniert, bitte IMMER dazuschreiben, WARUM es nicht funktioniert!
Hier ist zumindest eines offensichtlich: du musst dich natürlich an die Formatierung deiner Daten halten, also:
Wenn du möchtest, kannst du die Spalten im Nachhinein umsortieren:
Grüße,
Harald
|
|
|
|
| mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.10.2011, 19:53
Titel:
|
 |
Die Variable C ist:
[32x1 double] [32x1 double] [32x1 double] {32x1 cell}
Hat MATLAB die Zahlenwerte und das Zeichen gelesen, oder nur die generelle Struktur?
Gruß
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.10.2011, 20:57
Titel:
|
 |
Hallo,
C ist ein Cell Array, das die Spalten der Textdatei beinhaltet. C{1} ist die erste Spalte, C{2} die zweite etc. Ich kann nur wieder mal das systematische Einarbeiten in MATLAB empfehlen.
Grüße,
Harald
|
|
|
|
| eupho |

Forum-Meister
|
 |
Beiträge: 777
|
 |
|
 |
Anmeldedatum: 07.01.09
|
 |
|
 |
Wohnort: Marburg
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 19.10.2011, 06:57
Titel:
|
 |
| Harald hat Folgendes geschrieben: |
| Ich kann nur wieder mal das systematische Einarbeiten in MATLAB empfehlen. |
Die Betonung liegt auf "wieder"
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 19.10.2011, 16:04
Titel:
|
 |
Hallo mathphys,
| Zitat: |
Die Variable C ist:
[32x1 double] [32x1 double] [32x1 double] {32x1 cell}
Hat MATLAB die Zahlenwerte und das Zeichen gelesen, oder nur die generelle Struktur? |
Du hast alle Mittel auf Deinem Rechner um die Frage selbst zu beantworten. Ein Forum kann und soll das Lesen der Dokumentation nicht ersetzen.
Die Vorstellung, Matlab könne die "generelle Struktur" eines Files erkennen ist gleichermaßen absurd und faszinierend. Was genau könnte eine generelle Struktur denn sein? Und wie passt Deine Idee zum Hilfetext "help textscan"?
Gruß, Jan
|
|
|
|
| mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.10.2011, 20:56
Titel:
|
 |
Hallo
noch ein paar Fragen:
1)
Ich habe gelesen, dass man mit save Datein erstellen kann. Funktioniert das für jede Endung? Ich will eine Datei mit der Endung .xyz erstellen.
fprintf kann nur in Datein schreiben, doch keine neuen erstellen. Stimmt das so?
2)
Wie erstelle ich aus den Spalten C{4} C{1} C{2} C{3} meine Textdatei, denn das ist ja das ursprüngliche Ziel.
3)
Wie konvertiere ich das Format meiner C Spalten? Alles ist in "" Zeichen. Ich glaube MATLAB kapiert nicht, was da drinnen ist.
Danke für Hilfe
Grüsse
p.s.
stimmt, mein zu kleines Wissen ist eingerostet, daher beschäftige ich mich wieder damit. Ich musste es die letzten Wochen nicht nutzen und so vergisst man, vorallem wenn man nie richtig wusste
p.p.s.
@Jan S
Wieso ist das absurd? Tcl kann das doch auch.
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 08:54
Titel:
|
 |
Hallo,
1) save ist primär für .MAT-Dateien gedacht. Man kann damit auch ASCII-Dateien schreiben, aber du wirst mit den Limitierungen nicht glücklich sein.
Um fprintf anzuwenden, brauchst du einen File Identifier, der durch FOPEN mit Option 'w' erzeugt wird. Der FOPEN-Befehl kann auch neue Dateien erzeugen, Schreibrechte vorausgesetzt.
2) Ich bin gerade mit der FOR-Schleife nicht glücklich, aber so funktioniert es zumindest:
3) Unterschätze MATLAB da mal nicht. Nur weil wir chinesisch nicht verstehen, heißt es ja auch nicht, dass niemand chinesisch versteht.
Grüße,
Harald
|
|
|
|
| mathphys |
Themenstarter

Forum-Century
|
 |
Beiträge: 130
|
 |
|
 |
Anmeldedatum: 03.06.11
|
 |
|
 |
Wohnort: Deutschland
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 09:36
Titel:
|
 |
Hallo
erstmal Danke für de Hilfe. Mein Problem ist gelöst. Ich würde gerne noch über den Code weiter sprechen, in der Hoffnung etwas weniger unwissend zu sein
| Harald hat Folgendes geschrieben: |
|
Kann ich das so verstehen, dass deine Schleife Zeilenweise in die Datei newfile die Daten schreibt?
Was mich irritiert ist bei deinem fprintf, dass hinter den C{} nochmal geschweifte Klammern mit {I} stehen. Kannst du mir das erklären?
Gruß
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 09:56
Titel:
|
 |
Hallo,
| Zitat: |
| Kann ich das so verstehen, dass deine Schleife Zeilenweise in die Datei newfile die Daten schreibt? |
Genau.
| Zitat: |
| Was mich irritiert ist bei deinem fprintf, dass hinter den C{} nochmal geschweifte Klammern mit {I} stehen. Kannst du mir das erklären? |
Achtung, die Klammern um I sind mal geschweift (wenn wieder in ein Cell Array indiziert wird), mal rund (wenn in Double indiziert wird). Die Spalten sind wie gesagt in den einzelnen Zellen abgelegt. Um an die Zeilen zu kommen, kann man also in dieser geschachtelten Form indizieren.
Grüße,
Harald
|
|
|
|
|
|
|
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.
|
|