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

Variablen aus einem char bilden

 

RUNPOINT
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 31.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2015, 14:28     Titel: Variablen aus einem char bilden
  Antworten mit Zitat      
Hallo Zusammen,

ich habe ein Problem mit der Flexibilität meines Analysecodes. Aus diesem Grund würde ich gerne meine genutzten Variablen, mit welchen ich arbeite, automatisch erstellen lassen.
Im einzelnen bedeutet das:

Ich erstelle mir ein char mit variierender Größe, z.B. 100x6, 50x6 oder 4x6.
Hier stehen nun z.B. die 4 Begriffe Eisen1, Eisen2, Eisen3 und Eisen4.

jetzt möchte ich gerne erst einmal leere Variablen mit den Bezeichnungen Eisen1, Eisen2, Eisen3 und Eisen4 erstellen.

Leider komme ich hier eben genau nicht weiter.
Könnt ihr mir hierbei behilflich sein?

Gruß,
Sebastian
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.05.2015, 14:32     Titel:
  Antworten mit Zitat      
dynamische variablen namen sind fast immer eine schlechte idee. es ist aufwendig sie zu erstellen und noch aufwändiger sie danach wieder zu benutzen und genau so schwer zu debuggen.
besser wäre es gleich sinnvole namen zu benutzen oder wenigestens ein struct. da kann man dann die namen mittels fieldnames wieder auslesen.
wie man structs dynamisch erstellt lässt kann man in der dokumentation nachlesen.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
RUNPOINT
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 31.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2015, 17:28     Titel:
  Antworten mit Zitat      
Also irgendwie ist das alles nicht wirklich schön zu handhaben... Vielleicht konkretisiere ich ich mein aktuelles Problem noch einmal kurz.

Ich habe einen Ordner, in dem ich bis zu 300 CSV-Dateien habe. Ich möchte nun Variablen erstellen mit dem Namen V1,V2,V3...-V300.
Ich würde das so ungefähr machen:

for i=1:Anzahl_CSV_Dateien
Vi=csvread(Superdaten(i,1:end),1,0);
end

Das funktioniert natürlich nicht...aber für das Verständnis ist diese Schleife schon ganz gut denke ich. Mit Strukturen ist es für mich einfach mega schwer im weiteren Umgang.

Gibt es da eine Lösung für mich?

Gruß,
Sebastian
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 21.05.2015, 18:16     Titel:
  Antworten mit Zitat      
Zitat:
Mit Strukturen ist es für mich einfach mega schwer im weiteren Umgang.

viel spass im weiteren umgang mit V1 bis V300. die kann man nämlich nicht dynamisch verarbeiten im gegensatz zu structs oder arrays bzw cell arrays.
Code:
for i=1:Anzahl_CSV_Dateien
V{i}=csvread(Superdaten(i,1:end),1,0);
end

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
RUNPOINT
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 31.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2015, 08:48     Titel:
  Antworten mit Zitat      
Hmm also ich glaube ich werde in diesem Leben keun Matlabexperte mehr...

Also jetzt erhalte ich dadurch ja eine 1xn cell mit einer Matrix in jeder Einzelspalte. Es muss aber doch auch irgendwie möglich sein einzelne Variablen zu erstellen oder?

Ich bin wie unschwer zu erkennen nicht wirklich fit und bin sehr dankbar für die schnelle Hilfe!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.05.2015, 09:47     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Es muss aber doch auch irgendwie möglich sein einzelne Variablen zu erstellen oder?

Möglich: ja - empfehlenswert: nein.

Warum möchtest du denn unbedingt 300 Variablen haben? Wie würdest du diese weiterverarbeiten wollen?

Mit Winkows Vorschlag kannst du jederzeit mit
Code:
currentV = V{1};

oder
Code:
currentV = V{i};

den Inhalt einer cell herausholen, wenn dir das angenehmer erscheint.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
daNnyTigA
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 27.05.15
Wohnort: ---
Version: 2014b/2015a
     Beitrag Verfasst am: 27.05.2015, 21:04     Titel:
  Antworten mit Zitat      
moin,

ich habe ähnliches problem. wollte eigentlich auch dynamische variablen erzeugen wie der threadersteller mit

V1 = csvread(daten_1.csv)
V2 = csvread(daten_2.csv)
..
Vi = csvread(daten_i.csv)

ich weiß syntax ist ein bisschen falsch, aber zum verständnis denke ich ok. wollte das auch mit ner schleife lösen, dass er mir automatisch V1 bis Vi als Variable erstellt mit den einträgen aus daten_1 bis daten_i (darin stehen in spalte 1 bis 3 jeweils ca. 20000 Messwerte)

habe mir jetzt aber auch erstmal ein cell array hingebastelt wie winkows geschrieben hat, sodass in V{1,1} die daten aus daten_1 und in V{1,i} die daten aus daten_i stehen.

die daten aus V{1,i} möchte ich natürlich weiterverwenden: berechnungen durchführen und dabei in V{1,1} auch zusätzlich spalten erzeugen (z.B. steht in der vierten zeile dann immer jeweils die summe aus zeile 1-3), plotten, etc. habe auch noch nicht so viel erfahrung mit matlab, aber ich wollte einfach nur nochmal fragen, ob das mit dem cell array auf jeden fall die zu wählende methode ist oder würdet ihr das noch irgendwie anders machen?

danke und beste grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.05.2015, 21:21     Titel:
  Antworten mit Zitat      
Zitat:
habe auch noch nicht so viel erfahrung mit matlab, aber ich wollte einfach nur nochmal fragen, ob das mit dem cell array auf jeden fall die zu wählende methode ist oder würdet ihr das noch irgendwie anders machen?

das kommt immer drauf an was man damit machen will aber mit cell arrays, structs und normalen arrays kann man auf jeden fall besser arbeiten als mit einer variablen bei der ein laufindex im namen versteckt ist. daten und namen sollte man immer trennen.
wenn deine csv immer gleich groß sind kann es sich als besser herrausstellen eine 3d matrix zu benutzen.. will man später doch noch irgendwie einen namen zu den daten haben kann sich ein stuct hals hilfreich erweisen. das kann man so nicht generell sagen. aber ich würde soweit gehen das alles besser ist als den index im namen zu verstecken Wink
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
daNnyTigA
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 27.05.15
Wohnort: ---
Version: 2014b/2015a
     Beitrag Verfasst am: 28.05.2015, 18:24     Titel:
  Antworten mit Zitat      
super, vielen dank!
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 - 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.