Verfasst am: 30.06.2014, 11:13
Titel: Daten automatisch zu Vektor zusammenführen
Hallo,
ich hoffe ihr könnt mir bei meinem Problem helfen.
Für meine Bachelorarbeit möchte ich die Berechnungen die ich mit Ansys gemacht habe in eine Grafik packen. Dabei hab ich mehrere Textdateien (jede gehört zu einem anderen xWert) aus der ich eine Frequenz (yWert) auslese.
Im Grunde klappt es auch ohne Probleme. Sieht so aus:
Code:
%Einlesen der Textdokumente
dr=input('Frequenznr.= ')+4; %Frequenznummer
Werte=21; %Anzahl der eingelesenen Werte
Bla_d=0.05; %Blasendurchmesser
Ant_d=0.001; %Antennendurchmesser
Zyl_h=0.4065; %Zylinderhöhe
for Numtxt=0:(Werte-1);
fileID=fopen(['Höhe',num2str(Numtxt),'.txt']);
formatspec='%*f %f %*f %*f %*f';
assignin('base',['Hoehe' num2str(Numtxt)],textscan(fileID,formatspec,1,'Headerlines',dr,'Delimiter','\n'));
fclose(fileID);
end
%Packen der einzelnen Daten in einen Vektor
Data=[Hoehe0 Hoehe1 Hoehe2 Hoehe3 Hoehe4 Hoehe5 Hoehe6 Hoehe7 Hoehe8 Hoehe9 Hoehe10 Hoehe11 Hoehe12 Hoehe13 Hoehe14 Hoehe15 Hoehe16 Hoehe17 Hoehe18 Hoehe19 Hoehe20];
Datavec=cell2mat(Data);
Datavec sind dann die y-Werte. Danach lass ich das gemeinsam mit den xWerten ploten.
Mein Problem ist allerdings die Erstellung des Vektors "Data". Dort muss ich zur Zeit noch jede einzelne "Hoehe", die ich aus den Textdokumenten ausgelesen habe reinschreiben. So ist natürlich die Anpassung wenn ich mal z.B. 30 Werte hätte, ziemlich doof.
Darum wollte ich hier mal fragen, ob jemand eine Lösung kennt den Vektor automatisch zu erstellen. Also matlap zu sagen er soll einen Vektor erstellen in dem sich Hoehe0 bis Hoehej befindet.
Es ist eigentlich nie sinnvoll, Variablennamen zu erstellen, die durchlaufend nummeriert werden.
Stattdessen solltest du die Höhen gleich als Vektor zuweisen.
Code:
%Einlesen der Textdokumente
dr=input('Frequenznr.= ')+4; %Frequenznummer
Werte=21; %Anzahl der eingelesenen Werte
Bla_d=0.05; %Blasendurchmesser
Ant_d=0.001; %Antennendurchmesser
Zyl_h=0.4065; %Zylinderhöhe
Hoehe = zeros(1,Werte-1);
for Numtxt=0:(Werte-1);
fileID=fopen(['Höhe',num2str(Numtxt),'.txt']);
formatspec='%*f %f %*f %*f %*f';
Hoehe(1, Numtxt) = textscan(fileID,formatspec,1,'Headerlines',dr,'Delimiter','\n'));
fclose(fileID);
end
%Packen der einzelnen Daten in einen Vektor
Data = Hoehe;
Datavec=cell2mat(Data);
Ich tipp mal darauf, dass das Problem ist, das das textscan mir die Werte als "cell" einließt und nicht als double?!
grovi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 01.07.2014, 09:21
Titel:
Habs inzwischen selbst geschafft. Musst noch ein cell2mat rein und da der Vektor erst bei 1 beginnt musste ich noch paar +1 bzw. -1 dazu schreiben. Hab aber auch mal die Namen der Vektoren etwas verändert.
Code:
Datensatz=zeros(1,Werte);
for Numtxt=0:(Werte-1);
fileID=fopen(['Höhe',num2str(Numtxt),'.txt']);
formatSpec='%*f %f %*f %*f %*f';
daten=textscan(fileID,formatSpec,1,'Headerlines',dr,'Delimiter','\n');
data=cell2mat(daten);
Datensatz(1,Numtxt+1)=data;
fclose(fileID);
end
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.