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

cvs Datein in Matlab einlesen über MEX funktion

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2011, 10:00     Titel: cvs Datein in Matlab einlesen über MEX funktion
  Antworten mit Zitat      
Hallo Community,
habe soeben mein Tool um eine XLS in Matlab einzulesen fertiggestellt.
Das aktuelle Problem daran ists nun, dass das einlesen der Excel-Tabelle (6000x230) und das schreiben der Daten in eine Struktur recht lange dauert.
Nun habe ich von der Methode gehört, Matlab-Funktionen in C zu programmieren um den Ablauf zu beschleunigen. Das habe ich allerdings noch nie gemacht und die Tutorials helfen mir nicht wirklich weiter Smile

Habt ihr ein einfachs Tutorial oder ein Beispielprogramm, welches mir einen Einblick gibt, wie eine .cvs-Datei über MEX eingelesen werden kann.
Wenn ich die Tutorials richtig verstehe, geht der "C-Befehl"
Code:
fopen ("Pfad.csv");
ja nicht.

Hier noch ein kleiner Aussschnitt meiner cvs-datei:
Zitat:
RECZEIT;N;RECZEIT;T3
10;1000;10;55
20;1500;20;75


Ich hoffe ihr versteht mein Problem und mir kann jemand helfen Smile

Danke
Gruß
Markus


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 10.06.2011, 10:33     Titel:
  Antworten mit Zitat      
Hallo

hast auch hier schon geschaut:
http://www.mathworks.com/help/techdoc/matlab_external/f23224.html
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 10.06.2011, 11:11     Titel:
  Antworten mit Zitat      
Hallo Markus,

ich würde keine MEX-Datei dafür schreiben, sondern die Funktion textscan verwenden, die hierfür die richtige ist. In etwa:
Code:
fid = fopen('Pfad.csv', 'rt');
% read the header line
header = fgetl(fid);
% read the data
data = textscan(fid, '%g', 'delimiter', ';');
data = reshape(data{1}, 230, 6000)';
fclose(fid);
 


Ciao,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2011, 12:13     Titel:
  Antworten mit Zitat      
denny ich werd mir das mal anschauen. Die Beschreibung scheint etwas ausführlicher zu sein als die, die ich auf der Mathworks HP gefunden habe.

Titus, das bringt mich nicht weiter, bzw ich erhoffe mir keine große Ersparnis. Ich muss ja bereits die cvs manuell generieren (xls bekomm ich generiert) und dann wird der Code auch nicht viel schneller sein, als meine "xlsread" Version.

Hier noch zur Zusatzinfo... Ich bekomme die Excel Tabelle automatisch generiert von einem Programm. Die Daten in der Tabelle will ich jetzt mit MatLab auswerten, wozu sie möglichst schnell eingelesen werden sollen.
Bisher macht das mein Programm auch, nur erhoff ich mir durch umschreiben der "Einlese-Funktion(en)" in MEX-Files noch eine bessere Performance.
 
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.