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

Daten automatisch zu Vektor zusammenführen

 

grovi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2014, 11:13     Titel: Daten automatisch zu Vektor zusammenführen
  Antworten mit Zitat      
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.


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 30.06.2014, 11:44     Titel:
  Antworten mit Zitat      
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);

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
grovi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2014, 13:57     Titel:
  Antworten mit Zitat      
Schon mal vielen Dank für die schnelle Antwort Smile

Nur gibt es mir diese Fehlermeldung mit deinem Programm aus.
Code:
The following error occurred converting from cell to
double:
Error using double
Conversion to double from cell is not possible.

Error in Datentest (line 13)
Hoehe(1,Numtxt)=textscan(fileID,formatSpec,1,'Headerlines',dr,'Delimiter','\n');


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: ---
     Beitrag Verfasst am: 01.07.2014, 09:21     Titel:
  Antworten mit Zitat      
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
 
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.