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

sind 2 Leerzeichen als 'delimiter' moeglich?

 

Kiara
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2013, 07:58     Titel: sind 2 Leerzeichen als 'delimiter' moeglich?
  Antworten mit Zitat      
Hallo,

ich moechte einen den string
Code:
line = 'deg    sek   No Unit   m   K'


mit hilfe der schleife
Code:
for i=1:5;
        [token, remain] = strtok(line, ' ');
        Units{i} = token;        
        line = remain;
    end
 


in ein Cell Array
Code:
Units = {'deg' 'sek' 'No Unit' 'm' 'K'}
 


umwandeln.

Das Problem ist jedoch, dass ich mit dem Delimiter ' ' folgendes

Code:
Units = {'deg' 'sec' 'No' 'Unit' 'm' }
 


erhalte.

Gibt es ein Delimiter mit dem ich diesen Fehler umgehen kann?


dankeeee schonmal!!
_________________

Vielen Dank und LG
Kiara
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: 01.10.2013, 08:25     Titel:
  Antworten mit Zitat      
Der Delimiter ist korrekt - aber deine Schleife geht nur von 1 bis 5, es sind aber 6 Zeichen in deinem String die du extrahieren willst.
Matlab macht also exakt das, was du ihm sagst, nicht das was du willst Wink
_________________

LG
Martina

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

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2013, 11:00     Titel:
  Antworten mit Zitat      
Hallo Martina,

danke erstmal fuer die Antwort!

Also mein text File, die ich bearbeiten muss sieht wie folgt aus :

Code:
File1
Ang     Time     Cas          Dist    Tem
deg      sek       No Unit      m       K    
234       234      1              345    286
212       92        2              234    927
23         443      3              234    3827
124       343       4             234    293



Das Problem ist, dass die Software, die meine File einlesen und weiterverarbeiten muss 'No Unit' als 2 Variablen definiert weil eine Luecke dazwischen ist. Deswegen will 'No Unit' in No_Unit umschreiben, damit es als eine Einheit gelesen wird. Die Urspruengliche File kann ich nicht aendern, weil eine Software diese File so erstellt und ich keinen Einfuss darauf habe.
( klar kann man es jedes mal manuell umaendern, aber auf Dauer ist das zu viel Aufwand)

Mit
Code:
data = importdata (File1, ' ' , 3);


importiere ich erstmal die Daten und erhalte fuer die Einheiten erstmal
line= data.textdata{3}
= 'deg sec No Unit m K' als einen String.

i = 1: 5 habe ich gewaehlt, weil ich 5 Spalten habe und fuer jede Spalte eine Einheit defieren moechte.

Den Befehl strrep(Units , 'No Unit' , 'No_Unit') benutze ich zurzeit vorlaeufig.
Dies setzt aber voraus, dass die Einheit die eine Luecke enthaelt immer 'No Unit' heisst. Ich moechte aber alle moeglichen EInheiten die eine Luecke enthalten umschreiben.

Code:
for i=1:5;
        [token, remain] = strtok(line, ' ');
        Units{i} = token;        
        line = remain;
    end
 


Wenn ich fuer strtok(line, ' ') einen Delimiter haette, der das Leerzeichen zwischen No und Unit ignorieren wuerde bekaeme ich fuer Units{3} = 'No Unit' und koennte das dann umschreiben.
Es ist so schwer das zu erklaeren =(

Ich hoffe mein Problem ist jetzt etwas ersichtlicher.

Dankee!
_________________

Vielen Dank und LG
Kiara
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: 01.10.2013, 11:51     Titel:
  Antworten mit Zitat      
Ahhh! Ich dachte, du hast halt 6 Schlüsselworte im Header.

Dann würde ich als einfachste Variante line einfach nach "'No Unit" durchsuchen und ersetzen. Nicht schön, aber einfach und funzt:
so z.B.
Code:
if ~isempty(strfind(line,'No Unit'))
   line = strrep(line,'No Unit','No_Unit');
end

_________________

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.