Verfasst am: 19.09.2015, 12:00
Titel: funktion läuft nicht
Hallo,
ich scheitere leider gerade schon daran eine einfache Funktion zu basteln. Ich habe das script Datenaufbreitung_1a. das alleine ohne Probleme läuft, wenn ich aber aus dem script eine Funktion machen möchte und das ganze über MS_HA1 ausführe, erscheint Daten zwar im workspace aber ist leer.
Code:
function[tag] = Datenaufbereitung_1a(ausgangsdatei)
%pfad des Datensatzes
%pfad = fullfile(ausgangsordner,ausgangsdatei);
tagbestimmung(:,1)=data.data(:,3); %Datumsinhalt der Urpsrungsmatrix in tagbestimmung auflisten
tagbestimmung(:,2)=data.data(:,4);
tagbestimmung(:,3)=data.data(:,5);
tagesanzahlzeilen=unique(tagbestimmung,'rows'); %Ermitttlen aller Tage die in der Ursprungsmatrix vorhanden sind,
%indem überprüft wird, ob
%Jahr, Monat und Tag in einer Zeile gleich sind.
%Die Tage mit dem jeweiligen Datum werden in
%'tagesanzahlzeilen' gespeichert.
tagesanzahl=size(tagesanzahlzeilen,1); %Ermitteln der Tagesanzahl
wanntagzuende=zeros(tagesanzahl,1); %Initialisierung der Matrix 'wanntagzuende' zur Optimierung der nachfolgenden Schleife
z=1;
while(z <= length(tagesanzahlzeilen(:,1))) %Erstellen einer Matrix 'wanntagzuende', in der aufgelistet ist, in welcher Zeile der Ursprungsmatrix ein Tag beendet wird
wanntagzuende(z,1)=find(tagbestimmung(:,1)==tagesanzahlzeilen(z,1) & tagbestimmung(:,2)==tagesanzahlzeilen(z,2) & tagbestimmung(:,3)==tagesanzahlzeilen(z,3),1,'last');
%Es werden einzelne Einträge erstellt,
%in denen jeweils die die letzte Zeile in der Urprungstabelle ermittlet
%wird in denen Jahr, Monat
%und Tag gleich sind.
z=z+1; %Springen zum nächsten Tag
end
t=1;
i=1;
while(t <= tagesanzahl) %In dieser Schleife werden die Dateien erzeugt, in denen die Fahrdaten der einzelnen Tage hinterlegt werden.
tag=(data.data((i:wanntagzuende(t,1)),:)); %Es wird in 'tag' aus der Urprungstabelle eine Matrix erstellt, die die Fahrdaten für einen Tag enthält.
fileID = fopen([int2str(tagesanzahlzeilen(t,1)) '-' int2str(tagesanzahlzeilen(t,2)) '-' int2str(tagesanzahlzeilen(t,3)) '.txt'],'w'); %Erzeugung einer .txt Datei mit Benennung [YYYY-MM-DD] fprintf(fileID,'%6s %6s %6s %6s %12s\n',char(data.textdata(1,1)),char(data.textdata(1,2)),char(data.textdata(1,3)),char(data.textdata(1,4)),char(data.textdata(1,5))); %Header
fprintf(fileID,'%10.2f \t %8.2f \t %d \t %d \t %d\n',tag'); %Einfügen der Matrix 'tag' in die .txt Datei
fclose(fileID);
i=wanntagzuende(t,1)+1; %Springen in Anfangszeile der Ursprungstabelle des ersten Tages
t=t+1; %Springen in nächsten Tag
end end
Wieso "die Variablen"? Die einzige Variable, die nach Abschluss der Funktion im Workspace sein kann, ist
tag
unter dem Namen
Daten
, denn diese Variable ist die einzige, die zurückgegeben wird.
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
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.