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

Variableninitialisierung innerhalb von Schleifen vermeiden

 

captaincaos
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 07.12.2016, 08:52     Titel: Variableninitialisierung innerhalb von Schleifen vermeiden
  Antworten mit Zitat      
Hallo liebe Community,

Bei meinem derzeitigen Projekt lese ich automatisch Bilder ein und verarbeite diese.
Für die Verarbeitung der Bilder müssen mehrere Matrizen und Vektoren initialisiert werden.
Das Einlesen der Bilder erfolgt in einer for-Schleife. Zum Initialisieren der Matrizen muss mit der Größe des Bildes (size()) gearbeitet werden, daher müssen die Matrizen innerhalb der for-Schleife initialisiert werden (ich hoffe man kann mir noch folgen...).

Momentan löse ich das mit einer If-Abfrage. Das ganze sieht dann ungefähr so aus:

Code:

trigger = 0; % initialisieren der Triggervariablen

for ...

   img = imread(...); % einlesen des Bildes
   image_size = size(img); % Dimensionen des Bildes bestimmen

   if trigger==0
      Matrix_A = uint8(zeros(image_size)); % Beispielmatrix
      Vektor_B = Zeros(1,image_size(2));  % Beispielvektor
      trigger = 1; % Trigger setze
   end

% Hier folgt die Bildbearbeitung

end
 


Diese Lösung ist nicht schön und wahrscheinlich auch nicht effizient. Allerdings muss ich erstmal ein Bild eingelesen haben, damit ich die Matrizen und Vektoren initialisieren kann.
Ich hoffe mit eurer Hilfe vielleicht eine elegantere Lösung für das Problem zu finden.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


captaincaos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 07.12.2016, 11:27     Titel:
  Antworten mit Zitat      
Nach etwas Herumprobieren habe ich eine Alternative gefunden.
Wirklich eleganter finde ich es allerdings nicht Rolling Eyes .

Hier lese ich vor der for-Schleife schon mal eines der Bilder ein.
Komplett sieht das ganze dann so aus:
Code:

img = imread(...);
image_size = size(img);
Matrix_A = uint8(zeros(image_size)); % Beispielmatrix
Vektor_B = Zeros(1,image_size(2));  % Beispielvektor

for ...
   img = imread(...);

% Hier folgt die Bildauswertung

end


Vielleicht hilft das auf der suche nach einer möglichst eleganten Lösung.
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: 07.12.2016, 13:22     Titel: Re: Variableninitialisierung innerhalb von Schleifen vermeid
  Antworten mit Zitat      
Hallo captaincaos,

Es läuft beides korrekt, oder? Dann ist "elegant" eine eher akademische Entscheidung.
Code:
for k = 1:17
   img = imread(...); % einlesen des Bildes
   image_size = size(img); % Dimensionen des Bildes bestimmen

   if k == 1
      Matrix_A = zeros(image_size, 'uint8'); % Besser als uint8(zeros())
      Vektor_B = zeros(1,image_size(2));  % Kleines Z
   end
end


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
captaincaos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 07.12.2016, 13:55     Titel:
  Antworten mit Zitat      
Hallo,

ja es läuft beides korrekt und es ist wirklich ehr eine akademische Entscheidung.
Ich finde meine beiden Lösungen einfach unübersichtlich und dachte es müsse möglich sein das ganze in einer übersichtlicheren und/oder kompakteren Form zu lösen.

Aber letztendlich zählt ja wirklich nur dass es funktioniert.
Habe mich bei der Frage mehr von meinem Hang zum Perfektionismus leiten lassen Rolling Eyes .
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.