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

Daten aus einer Zelle trennen

 

Tradinno
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 02.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 14:42     Titel: Daten aus einer Zelle trennen
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Problem: Ich habe in einer Zelle eine Vielzahl von Daten, die jeweils durch sieben Leerzeichen getrennt sind. Ich möchte jedoch jeden einzelnen Wert in einer neuen Spalte haben.
Wie kann ich das umsetzen?

Vielen Dank schon mal!

Beste Grüße
Tanja
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 02.05.2013, 15:59     Titel:
  Antworten mit Zitat      
Umsetzen:
1. suchen der Indexe der Leerzeichenblöcke (über strfind)
2. mit diesen Indexen entsprechend in der Zelle die Teilstrings ansprechen und in Cell-matrix umspeichern.

Falls du weißt, in welcher Form die Daten zwischen den Leerzeilen vorliegen ließe sich das ganze leichter konkretisieren.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Tradinno
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 02.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2013, 09:40     Titel:
  Antworten mit Zitat      
Hallo Martina,

vielen Dank schon mal...leider hilft mir das noch nicht weiter...hier vielleicht noch etwas detaillierter.
Ich lese aus einem input-file Daten ein. Ich erhalte eine n x 1-Matrix...Da ich in einer Zelle jedoch 19 verschiedene Werte habe, die jeweils durch Leerzeichen getrennt sind, möchte ich, dass aus der n x 1- Matrix eine n x 19-Matrix wird, bei der jeder Wert in einer separaten Zelle steht.
z.B. '1 7 9' steht in einer einzelnen Zelle, 1, 7, 9 sollte jedoch in einer separaten Zelle stehen.

Vielen lieben Dank
Tanja
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 03.05.2013, 09:43     Titel:
  Antworten mit Zitat      
Poste doch mal den Code, den du schon hast.
(Und eine genaue Beispielquellzeile wäre auch nicht schlecht. Um so mehr Informationen du gibst, um so mehr kann man gezielt antworten.)
Hast du mit strfind versucht die Indexe der Leerzeichenblöcke zu finden?
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Tradinno
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 02.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2013, 14:46     Titel:
  Antworten mit Zitat      
Hallo,

leider konnte ich das Problem immer noch nicht lösen...
Nun habe ich einen Teil des Input-Files angehängt.
Ziel ist es, den eblock so einzulesen, dass einzelnen Zahlen in Spalten separiert werden.

Hier der Code, mit dem ich es versucht habe:

Code:

Anzahl_Zeilen=0;
fid=fopen('Input_forum.dat','r');

while ~feof(fid)
        fgetl(fid);
        Anzahl_Zeilen=Anzahl_Zeilen+1;
end
fclose(fid);
ganzesFile = cell(Anzahl_Zeilen, 1);

fid=fopen('Input_forum.dat','r');
   
 for i = 1:Anzahl_Zeilen
 ganzesFile{i}=fgetl(fid);
 end
fclose(fid);

Zeilen_Elemente=strmatch('/wb,elem,',ganzesFile); % Suchen in ganzesFile, wann der Ausdruck /wb,elem, auftaucht
Elemente_Start = Zeilen_Elemente(1,1)+6;
Elemente_Ende = Zeilen_Elemente(2,1)-2;
cEblock = ganzesFile(Elemente_Start:Elemente_Ende,:);
   
Element_Anzahl = size(cEblock);
Element_Anzahl = Element_Anzahl(1,1);

k=1
for i= 1:Element_Anzahl
   A=cEblock(i,1);
   A=regexp(A,'       ','split'); % sieben Leerzeichen als Trennung
   A=[A{:}];
   B(k,1:16)=A;
   k=k+1;
   
end


Leider funktioniert dieser Code nur in den ersten Zeilen, bei dem die einzelnen Zellen durch jeweils sieben Leerzeichen getrennt sind. Weiter unten nimmt die Anzahl der Leerzeichen ab.
Vielleicht kann mir jemand helfen, diesen Code zu verbessern, oder jemand hat eine neue Lösung?

Vielen lieben Dank schon mal!

VG Tanja
Private Nachricht senden Benutzer-Profile anzeigen
 
Tradinno
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 02.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2013, 14:54     Titel:
  Antworten mit Zitat      
Ups, der Anhang war nicht dabei...
Leider kann ich keine DAT files anhängen...ich hoffe, das macht keinen Unterschied?

Input_forum.txt
 Beschreibung:

Download
 Dateiname:  Input_forum.txt
 Dateigröße:  190.85 KB
 Heruntergeladen:  440 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 08.05.2013, 11:36     Titel:
  Antworten mit Zitat      
Lösungsmöglichkeiten:
0. Forumsuche, Matlab-HILFE für regexpr oder google bemühen
1. Trennzeichen für jede Zeile !=1 entsprechend anpassen
2. regexp auf Zahlen auslegen und so nur die Zahlen auslesen, unabhängig von menge der Leerzeichen
Code:

3. sscanf nutzen
Code:

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
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.