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

externes Programm mit !... Wie Variablen "reinfüttern&

 

J.H.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2010, 22:11     Titel: externes Programm mit !... Wie Variablen "reinfüttern&
  Antworten mit Zitat      
Guten Abend zusammen,

Ich sitze hier schon eine ganze weile an einem skript der mir eine CSV Datei einließt und plottet.

Diverse Problemchen konnte ich schon lößen (u.A. dank der vielen Beiträge in diesem forum!), aber jetzt stehe ich vor einem Problem wo ich keine lösung finde.

Und zwar nutze ich um die CSV Datei vor dem einlesen zu Formatieren ein externes Program ( sed).

Zum Beispiel
Code:
!sed -i s/,/./g G5781.CSV

ersetzt mir die kommas in der Datei durch Punkte, und
Code:
!sed -i '/END OF DATA FILE OF DATALOGGER FOR WINDOWS/d' G5781.CSV

löscht mir einen text am Ende der Datei der anderweitig alles durcheinander bringen würde.

Nur sollte der skript mehrere Datein plotten, und die Dateinamen per hand jeweils eintippen ist eher suboptimal.

Daher will ich mir da irgendwie eine Schleife bauen, aber bevor ich damit anfange sollte ich eine möglichkeit finden wie ich (bzw. ob ich überhaupt) eine Variable in einen externes Programm einfügen kann.

Also irgendwie was wie
Code:

filename = 'G5781.CSV';
!sed -i s/,/./g filename;
 

Nur mit diesem Pseudocode nimmt sed als filename eben einfach filename, und nicht die Datei.

gibt es eine möglichkeit matlab variablen in ein externes Programm zu schleusen?

Über
Code:

unix ('sed -i s/,/./g', 'filename');
 

habe ich es auch schon versucht, aber soweit ich das sehe ist es da auch nicht vorgesehen das sich etwas im Befehl ändert.

MfG Jo


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.07.2010, 22:23     Titel: Re: externes Programm mit !... Wie Variablen "reinfütt
  Antworten mit Zitat      
Hallo J.H.,

Code:

unix (['sed -i s/,/./g ', filename]);
 


Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
J.H.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2010, 22:32     Titel:
  Antworten mit Zitat      
Code:
>> unix(['sed -i s/,/./g',filename])
sed: no input files


Ich glaube nicht das ich auf diese weise eine Datei an sed übergeben kann, denn auch ein gegentest funktionierte nicht:
Code:
>> unix(['sed -i s/,/./g',G5781.CSV])
??? Undefined function or variable 'G5781'.
 

Datein in Hochkommas stellen bringt auch nix.

Jo
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.07.2010, 23:24     Titel:
  Antworten mit Zitat      
Hallo Jo,
J.H. hat Folgendes geschrieben:
Code:
>> unix(['sed -i s/,/./g', filename])
sed: no input files

Ich glaube nicht das ich auf diese weise eine Datei an sed übergeben kann, ...

"Glauben" ist dabei gar nicht so wichtig. Wenn die Variable "filename" richtig definiert ist und Du nicht das Leerzeichen hinter "/g" wegläßt, funktioniert es auch.

J.H. hat Folgendes geschrieben:
denn auch ein gegentest funktionierte nicht:
Code:
>> unix(['sed -i s/,/./g',G5781.CSV])
??? Undefined function or variable 'G5781'.
 

Ja, denn hier ist "G5781.CSV" auch kein Variablennamen, sondern wiederum ein String. Also:
Code:
unix('sed -i s/,/./g G5781.CSV')


Gruss Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
J.H.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2010, 23:36     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Jo,
J.H. hat Folgendes geschrieben:
Code:
>> unix(['sed -i s/,/./g', filename])
sed: no input files

Ich glaube nicht das ich auf diese weise eine Datei an sed übergeben kann, ...

"Glauben" ist dabei gar nicht so wichtig. Wenn die Variable "filename" richtig definiert ist und Du nicht das Leerzeichen hinter "/g" wegläßt, funktioniert es auch.


Ich hasse Leerzeichen Rolling Eyes
diese nervigen unsichtbaren Dinger ...

Mit selbigem funktioniert es tatsächlich!
Ich hab ja schon diverse Varianten durchprobiert, aber auf ein Leerzeichen bin ich noch nicht gekommen.
Ansonsten ist ja Leerzeichen oder nicht eigentlich egal. A=2 oder A = 2 sind ja das gleiche.

Vielen dank auf jeden fall, währe ich glaube ich selber nicht drauf gekommen!

Jo
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.07.2010, 01:16     Titel:
  Antworten mit Zitat      
Hallo Jo,

Zitat:
Ich hasse Leerzeichen :roll:
diese nervigen unsichtbaren Dinger ...


Dann solltest Du möglicherweise nicht auf WhiteSpace umsteigen:
http://de.wikipedia.org/wiki/Whitespace_%28Programmiersprache%29

Es gibt noch weitere Tücken:
Code:
disp([1 + 2]);
disp([1 +2]);
disp([1 2
  3 4]);
a = 'b';
disp(['a ' 'a']);
disp(['a ' a']);
disp(['a ' 'a']);


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.