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

Dynamische Matrixvariable aufrufen

 

checko
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 03.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2017, 21:06     Titel: Dynamische Matrixvariable aufrufen
  Antworten mit Zitat      
Hallo Mitglieder,
im Rahmen eines Forschungsprojekts bin ich für die Programmierung einer automatischen Spraybildauswertung von Kraftstoffinjekoren zuständig. Dem Anhang habe ich ein solches Spraybild (binär) angefügt. Zu sehen sind 5 Kegel, welche einzelnd detektiert und ausgewertet werden müssen. Es wäre also geschickt, in einer for - Schleife für jeden Kegel (hier in der Zahl 5) eine neue Matrix (format: double) mittels zeros (zielen,spalten) zu erzeugen und dann mit einsen entsprechend zu ergänzen. Dazu ist ein dynamischer Variablenname Kegel_i nötig:

Code:

for i=1:Kegelanzahl  
assignin ('base',['Kegel_' num2str(i)], zeros (z,s));
...
 


Der Code scheint reibungslos zu funktionieren, bloß stelle ich mir jetzt die Frage, wie ich die soeben erstellte Matrix (zb. Kegel_1) über die Laufvariable i aufrufe, damit ich diese in den darunterliegenden Codezeilen bearbeiten kann??

Code:

Kegel_.(i)
Kegel_(num2str(i))
 


... funktionieren nicht! Sorry, mit der Syntax tue ich mir noch schwer Laughing

Auch wenn ich bereits recherchieren konnte, dass dynamische Variablennamen vermieden werden sollten, würde ich diese Vorgehensweise dennoch bevorzugen.
Kann mir hier jemand weiterhelfen? Besten Dank im Voraus!!! Cool Wink

Zeitschritt_binär_13.tif
 Beschreibung:
Frontansicht Spraybild

Download
 Dateiname:  Zeitschritt_binär_13.tif
 Dateigröße:  6.82 KB
 Heruntergeladen:  479 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2017, 21:13     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Auch wenn ich bereits recherchieren konnte, dass dynamische Variablennamen vermieden werden sollten, würde ich diese Vorgehensweise dennoch bevorzugen.

Warum würdest du das bevorzugen? Sobald man einmal mit assignin, eval etc. anfängt, kommt man beim automatisierten Arbeiten nicht mehr davon weg. Du musst also jeden weiteren Befehl mit eval gestalten - nicht schön.
Schöner ist ein Cell Array:

Code:
for i=1:Kegelanzahl  
Kegel{i} = zeros (z,s);


Weiterer Zugriff immer mit Kegel{i} .

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
checko
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 03.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2017, 21:25     Titel:
  Antworten mit Zitat      
Das ging ja schnell, vielen Dank Harald!

Und wie sieht dann der Zugriff auf einzelne Zellen aus?

Code:

Kegel {i (z,s)}  = im (z,s)
 


So?

Vielen Dank im Voraus!!
Private Nachricht senden Benutzer-Profile anzeigen
 
checko
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 03.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2017, 21:55     Titel:
  Antworten mit Zitat      
Hat sich geklärt:)

Einfach eine neue Matrix (K = zeros (z,s)) definieren, an welcher dann der einzelne Kegel ermittelt wird und am Ende einfach über Kegel{i} = K dem cellarray zuweisen:

Code:

for i=1:Kegelanzahl
K = zeros (z,s)
...
...
...
...
Kegel{i} = K
end
 


Harald, besten Dank nochmal!!! Cool
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2017, 16:53     Titel:
  Antworten mit Zitat      
Hallo,

entweder das, oder
Code:
Kegel{i}(z, s)


Grüße,
Harald
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 - 2024 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.