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

Variable mit durch Abfrage zu bestimmenden Variablennamen

 

Senraphil
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 16.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2016, 21:29     Titel: Variable mit durch Abfrage zu bestimmenden Variablennamen
  Antworten mit Zitat      
Guten Abend zusammen,

wie im Thread-Titel schon angedeutet, möchte ich eine Variable erstellen, deren Variablenname durch eine Abfrage bestimmt werden soll. Das ganze soll in einer for-Schleife mit untergelagerter if-Schleife ablaufen. Nachfolgend ein kleines Beispiel, um die Problematik anschaulich darzustellen:

Code:

A= {'Johannes' 'Matthias'}


Diese beiden Namen sollen mit den Namen einer Liste einer Schulklasse verglichen werden. Ziel ist es zunächst zu ermitteln/vergleichen, ob die gesuchten Namen auf der Liste aufgeführt sind.

Code:

B={'Maria' 'Jonas' 'Matthias' 'Peter' 'Luisa' 'Johannes' 'Lisa' 'Kevin'}


Den Abgleich der Liste mit den beiden gesuchten Namen habe ich mir ungefähr so vorgestellt:

Code:

for k=1:length(B)
if strncmp(A{k,1},B{1,:},length(A))
% nun soll eine Variable erstellt werden, deren Name dem 1. gesuchtem Namen entspricht; ungefähr so:
Johannes='sitzt in Reihe 3, Platz 2'
end
end
 


Allerdings darf der Name der Variable (Johannes) nicht einfach eingegeben werden, sondern muss durch eine Abfrage, nämlich welcher der 1. gesuchte Name ist, erstellt werden. Dadurch können mittels Indizierung unterschiedliche viele Variablen erstellt werden, je nachdem nach wie vielen Namen in der Liste gesucht werden soll.

Hat irgendwer eine Idee zu meiner Fragestellung?

Vielen Dank und beste Grüße
Senraphil
Private Nachricht senden Benutzer-Profile anzeigen


gs
Forum-Century

Forum-Century


Beiträge: 172
Anmeldedatum: 17.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2016, 07:37     Titel:
  Antworten mit Zitat      
Guten Morgen,

Ich hab irgendwie die Frage nicht ganz mitbekommen...

Bei was brauchst du jetzt Hilfe?

Beim Eingeben der Namen?
Beim Durchsuchen?
Beim Auswerten?

Grüße gs
Private Nachricht senden Benutzer-Profile anzeigen
 
Senraphil
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 16.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2016, 08:08     Titel:
  Antworten mit Zitat      
Guten Morgen,

den Abgleich der beiden gesuchten Namen (A) mit der Liste (B) bekommen ich hin.

Anschließend, wenn die if-Schleife zurückmeldet, dass die Suchbedingung erfüllt ist, komme ich nicht weiter. Denn nun soll eine Variable (evtl. ein cell array) erstellt werden, die den Namen des ersten Suchkriteriums ('Johannes') hat und den Inhalt 'sitzt in Reihe 3, Platz 2'.

Das konkrete Problem besteht in der Generierung der Variable "Johannes", deren Variablenname mittels einer Abfrage (Was ist das erste Suchkriterium? Anwort: Johannes) gefunden werden soll.
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: 25.05.2016, 10:32     Titel:
  Antworten mit Zitat      
Hallo Senraphil,

Es gibt keine "if-Schleifen".

Die dynamische erstellung von Variablen ist ein verbreiteter Anfängerfehler bei Programmierern. Es ist prinzipiell ein schlechter Programmierstil und man handelt sich damit viele Schwierigkeiten ein. Du findest zu dem Thema hunderte Threads in diesem Forum. Suche nach "eval" und "assignin":

1. Es erschwert das Debuggen sehr.
2. Matlab's JIT Acceleration, die den Code analysiert und beschleunigt, kann die Variablen nicht zuordnen und der Code, vor allem Schleifen, können um mehr als den Faktor 150 langsamer werden.
3. Die Erzeugung dieser Variablen ist noch einigermaßen machbar, aber später darauf zuzugreifen, ist echt vertrackt. Man muss bei jeden Zugriff erstmal den Namen herausbekommen und testen, ob die Variable existiert.

Die einfach Regel dazu lautet also:
Mache das nicht!
Variablennamen sollen Variablennamen bleiben und die Werte gehören in die Inhalte. Ich trage ja auch nicht meine Telefonnummer und Schuhgröße im Namen.

Versuche es mit dynamischen Feldnamen:
Code:
Name = 'Peter';
Data.(Name).Value = 'hallo';


Gruß, 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.