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

Übernehmen von Sequenzen aus einem Variablennamen

 

mou551
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 25.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2016, 13:33     Titel: Übernehmen von Sequenzen aus einem Variablennamen
  Antworten mit Zitat      
Moin,

ich habe folgende Problem:
ich habe meine Variablennamen mit Indize abgespeichert. Jetzt möchte ich beim Einlesen des Datensatzes einmal den Variablennamen eingeben und bei der Datenausgabe möchte ich, das der Indize von dem eingelesenen Variablennamen übernommen wird.

was ich haben möchte ist:

Code:

%Einlesen
dat=dat_1

%verschiedene Operationen

%Datenausgabe
dat_1_neu= dat_neu         % hier soll der Indize 1 vom Daten einlesen
                           % übernommen werden
 


Funktion ohne Link?

kennt dafür jemand eine Lösung wo ich am Ende keinen Cell Array bekomme?
(Die Eval Funktion hat bei mir dann ein Cell Array erzeugt)

Gruß Moritz
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.09.2016, 17:07     Titel: Re: Übernehmen von Sequenzen aus einem Variablennamen
  Antworten mit Zitat      
Hallo mou551,

Indizes haben in den Namen von Variablen nichts verloren. Wenn man mit komplizierten Methoden solche Variablen erzeugt, ist man gezwungen noch kompliziertere Methoden zu verwenden, um sie später wieder zu benutzen.
Die Lösung klingt trivial: Verwende Indizes als Indizes! :-)
Nimm entweder numerische Arrays, wenn alle Variablen den gleichn Typ und die gleiche Größe haben, oder Cell-Arrays wenn nicht.

Code:
kennt dafür jemand eine Lösung wo ich am Ende keinen Cell Array bekomme?
(Die Eval Funktion hat bei mir dann ein Cell Array erzeugt)

Um das nachvollziehen zu können, müsstest Du den entsprechenden EVAL-Befehl posten. Aber auch dann wäre die Lösung die gleiche: Vermeide EVAL und Indizes in Namen.

Zu diesem Thema findest Du übrigens hunderte Threads in diesem Forum. Suche mal nach EVAL und ASSIGNIN, denn beide Befehle zeugen von Anfängerfehlern beim Programmieren.

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
mou551
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 25.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2016, 09:06     Titel:
  Antworten mit Zitat      
Moin,

also mein Code war:

Code:

for idx = 1:3
data{idx} = eval(['data', num2str(idx)]);
end
 

ABER SO EINE LÖSUNG WILL ICH NICHT!!!!

Aber ich bin sicher , dass dieses Problem nicht so schwer zu lösen ist, wenn man das Problem einfach annehmen würde.

Man muss doch den Variablennamen dat_1 in einem String zwischenspeichern können und dann unten wieder als char oder sowas einfügen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.09.2016, 17:27     Titel:
  Antworten mit Zitat      
Hallo mou551,

Was gefällt Dir an der "Lösung" nicht?
Aus der Sicht einer sauberern Programmierung hat sie dan gravierenden Nachteil, dass zuerst überhaupt Variablen mit einem Index im Namen auftauchen. Wie schon erwähnt ist das ein typischer Anfängerfehler. Ein Programm, dass auf solche Methoden aufbaut, löscht man am besten und schreibt es sauber neu, wobei gleich von Anfang an Indices als Indices verwendet werden.

Alle Versuche sich mit EVALs durch den Code zu mogeln scheitern früher oder später an Undurchsichtigkeit, unvorhersehbaren Bugs und fehlender Wartbarkeit.

Viel erfolg, Jan
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.