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

Spannbaum Würfel

 

hanson10
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2015, 18:01     Titel: Spannbaum Würfel
  Antworten mit Zitat      
Hallo zusammen, ich möchte einen pfad aufstellen lassen wie sich ein würfel entfalten lässt hierzu folgender beispielcode
Code:
%Nachbarschaftsmatrix aus vorheriger Berechnung [Element Nachbarelement1-4]
neighbors=[1 2 3 4 5; 2 1 3 4 6; 3 1 2 5 6; 4 1 2 5 6;...
    5 1 2 4 6; 6 2 3 4 5];
start_element=1;
remaining_els=[1;2;3;4;5;6];
remaining_els(remaining_els(:,1)==start_element)=[];
number_remaining_els=size(remaining_els,1);
ref_els=start_element;
%ersetzt Nachbarn/Kinder in neighbors-Matrix mit 0, damit sie
%nicht mehr als Nachbarelemente gefunden werden können
ersetzen = neighbors(:,2:5) == ref_els;
neighbors([false(size(neighbors,1),1), ersetzen]) = 0;
tree=[];



while number_remaining_els ~= 0
    %if size(ref_els(1,:)) ~= 0
        for i=1:length(ref_els)
            ref_element=ref_els(i);
            %speichert Elternelemente in neue Zeilen
            tree(end+1,1)=ref_element;
            %findet Nachbarn/Kinder der Elternelemente und speichert
            %Nachbarn in Spalten 2:5
            border_els=neighbors(ref_element,2:5);
            if border_els == [0 0 0 0]
               break
            end
            tree((tree(:,1)==ref_element),2:5)=border_els(1:4);
            %ersetzt Nachbarn/Kinder in neighbors-Matrix mit 0, damit sie
            %nicht mehr als Nachbarelemente gefunden werden können
            for j=1:length(border_els)
                ersetzen = neighbors(:,2:5) == border_els(j);
                neighbors([false(size(neighbors,1),1), ersetzen]) = 0;
            end
            %löscht bearbeitetes Elternelement aus Liste verbleibender
            %Elemente
            remaining_els(remaining_els(:,1)==ref_element)=[];
        end
        %macht Kinder zu Eltern in nächstem Durchlauf
        border_els(border_els==0)=[];
        ref_els=border_els;
        number_remaining_els=size(remaining_els,1);
   % end
end
tree
 

ich habe nun das problem, dass er nicht zum ende kommt. Kann mir hier evtl jemand helfen?

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
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.02.2015, 18:42     Titel: Re: Spannbaum Würfel
  Antworten mit Zitat      
Hallo hanson10,

Zitat:
ich habe nun das problem, dass er nicht zum ende kommt.

Was bedeutet das? Wie lange läuft das Programm? Ist es zu langsam oder eine Endlos-Schleife?

Anmerkung:
Code:
if border_els == [0 0 0 0]

Der == Operator vergleicht elementweise. Das ist zwar kein Fehler hier, aber oft eine Quelle von Bugs. Besser wäre es explizit hinzuschreiben:
Code:
if all(border_els == 0)
% Oder:
if isequal(border_els, [0,0,0,0])
 


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.