Und zwar macht die Funktion jetzt schon einmal grundsätzlich, was sie soll. Allerdings soll sie das ganze nicht nur ein Mal machen, sondern immer wiederholen, bis alle Elemente 3 oder kleiner sind. Ich hatte daher versucht eine while-Schleife à la
darum zu bauen. Allerdings sagt er mir dann, dass er i und j nicht initialisiert hat. Also habe ich die beiden for-Schleifen noch einmal darum gesetzt. Dann hat er totalen Mist gemacht.
Ich will also wirklich konkret, dass er zuerst addiert, dann die Elemente durchgeht und dann, falls er mindestens eins findet, welches größer als 3 ist, die Berechnung durchführt. Dann soll er wieder abfragen, ob ein Element größer als 3 ist usw.
Vielleicht kann mir da ja jemand helfen
PS.: Für eine bestimmte Anzahl von Spalten und Zeilen (immer gleich viel). Hatte ich den Code schon einmal geschrieben, sodass er auch reibungslos funktioniert. Er soll aber eben von der Zeilen- und Spaltenzahl her unabhängig und für alle n nutzbar sein.
Also, ich habe das Problem jetzt grundsätzlich einmal gelöst bekommen:
Code:
function c=sandhaufen(a,b,n)
c=a+b;
whileany(c(:)>3) for i=1:n
for j=1:n
if c(i,j)>3
c(i,j)=c(i,j)-4;
endif
if i-1>0
c(i-1,j)=c(i-1)+1;
endif
if i+1<=n
c(i+1,j)=c(i+1,j)+1;
endif
if j-1>0
c(i,j-1)=c(i,j-1)+1;
endif
if j+1<=n
c(i,j+1)=c(i,j+1)+1;
endif
endfor
endfor
Allerdings habe ich immer noch das Problem, dass es ab einer 4x4-Matrix arschlange dauert. Und ich muss den Code unter anderem auch auf eine 101x101-Matrix anwenden. Hat jemand eine Idee, wie man das beschleunigen kann?
PS.: Ich werde auch nochmal ein neues Thema zu der zweiten Schleife öffnen und es dann hier verlinken
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
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.