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

ASCII importieren per m-skript

 

Günter64

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2009, 10:26     Titel: ASCII importieren per m-skript
  Antworten mit Zitat      
Hallo,

wahrscheinlich blöde Frage, aber ich finde den richtigen Befehl nicht. Ich möchte in meinem M-Skript ein ASCII-File (in diesem Fall Excel-Dokument) importieren, was man ja normal einfach mit xlsread macht. Allerdings würde ich gerne wie beim Import-Wizard möglich "Create vectors from each column using column names" durchführen. Wie lautet der entsprechende Befehl für mein M-Skript, damit im Workspace direkt Vektoren mit den zugehörigen Spaltenwerten hinterlegt werden, also nicht einfach eine Matrix mit den Werten aus dem ASCII-File?

Danke schonmal!

Gruß


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.06.2009, 10:34     Titel:
  Antworten mit Zitat      
Moin,

am besten du nimmst den ImportWizard und dann klickst du am Ende auf "Generate m-file". Du bekommst dann eine Funktion in einem mFile, welche genau die Aktionen ausführt, die du im Wizard ausgeführt hast. Input ist dann der Dateiname.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Günter64

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2009, 10:47     Titel:
  Antworten mit Zitat      
Hi, erstmal danke für die schnelle Antwort.

Leider hab ich noch eine Matlab-Version, bei der die "Generate m-file Funktion" noch nicht im Import-Wizard vorhanden ist (R2006a). Kann man das noch irgendwie anders hinbekommen?

Gruß
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.06.2009, 11:17     Titel:
  Antworten mit Zitat      
Moin,

im Prinzip läuft es darauf hinaus, dass du mit GENVARNAME und ASSIGNIN arbeiten musst. Hier mal die Funktion die bei mir erstellt wird:
Code:
function importfile(fileToRead1)
%IMPORTFILE(FILETOREAD1)
%  Imports data from the specified file
%  FILETOREAD1:  file to read

%  Auto-generated by MATLAB on 10-Jun-2009 10:16:47

% Import the file
newData1 = importdata(fileToRead1);

% For some XLS and other spreadsheet files, returned data are packed
% within an extra layer of structures.  Unpack them.
fields = fieldnames(newData1.data);
newData1.data = newData1.data.(fields{1});
fields = fieldnames(newData1.textdata);
newData1.textdata = newData1.textdata.(fields{1});
fields = fieldnames(newData1.colheaders);
newData1.colheaders = newData1.colheaders.(fields{1});

% Break the data up into a new structure with one field per column.
colheaders = genvarname(newData1.colheaders);
for i = 1:length(colheaders)
    dataByColumn1.(colheaders{i}) = newData1.data(:, i);
end

% Create new variables in the base workspace from those fields.
vars = fieldnames(dataByColumn1);
for i = 1:length(vars)
    assignin('base', vars{i}, dataByColumn1.(vars{i}));
end


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Günter64

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2009, 12:12     Titel:
  Antworten mit Zitat      
Danke, hat funktioniert. Jetzt muss ich nur noch schauen wie ich im gleichen M-Skript schon auf die erzeugten Vektoren zugreifen kann. Bisher kommt die Fehlermeldung, dass er sie noch nicht kennt. Obwohl sie nach Durchlaufen der Funktion im Workspace stehen.

Gruß
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.06.2009, 12:50     Titel:
  Antworten mit Zitat      
Die Vektoren stehen im "Base"-Workspace, deshalb kennt er sie in der Funktion nicht mit ihrem Namen.

Wenn du die Vektoren in dieser Funktion mit ihrem Spaltennamen nutzen möchtest, dann musst du folgendes ändern:
Code:
for i = 1:length(vars)
    assignin('importfile', vars{i}, dataByColumn1.(vars{i})); % wenn du die Funktion umbenannt hast, dann muss statt 'importfile' dein Funktionsname in ' ' stehen
end

_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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 - 2024 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.