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

Doppelte while Schleife

 

Haas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2016, 09:53     Titel: Doppelte while Schleife
  Antworten mit Zitat      
Hallo, hoffe ihr könnt mir helfen.

Die funktion soll zur FEM berechnung dienen.

Konkreter Fall:
xele=4;
yele=4;
zele=10;
vp = 1;
l=1;
Diser teil der Funktion soll alle meine werte vom Vekto löschen die auf der äuseren Y-ebene liegen das sind 13 14 15 16 ; 29 30 31 32 ... also immer 16 dazu bis zum ende des Vektors.

Theorie:
Ich habe eine Vorgabe in wie viele abschnitte meine Achsen unterteilt sind. Ich Erzeuge ein Gitter und zähle die punkte durch von unten links nach unten rechts und dann eine ebene nach oben.
Aller dings sind die Äuseren Punkte unerwünscht. Per Hand löschen ist keine Option bei bis zu 5000 Elementen.

Daher möchte ich mit den zwei schleifen unten Arbeiten. Die erste soll den startwert auf 13 dann 14 dann 15 und dann 16 festlegen. Die zweite löscht das Element mit dem wert 13, 29, 45 ...

Mein Problem ist die übergeordnete schleife sie macht es 10 mal für den wert anfangswert 13.


Code:

n= xele * yele;                          % Schrittweite

    while(xele>=l)
    v=(n:n:zele*n)' - (xele-l);       % Vektor Schrittweite mit verändertem Startwert
   
        while(length(v)>= vp)
        o(o==v(vp))=[]
        vp=vp+1;
        end
       
    l=l+1;    
    end
   
 end



Hoffe ihr könnt mir helfen und die Frage ist Fragenswert, habe mich daran festgebissen und sitze seit 8 Stunden an der Umsetzung. Ewt. ist es ja auch nur der Tunnelblick.

Ich bin MATLAB Anfänger und ewt ist der Rest auch nicht optimal aber zumindestens funktional.

Vielen Dank aber schonmal für eure Zeit und Ratschläge.


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.12.2016, 13:31     Titel: Re: Doppelte while Schleife
  Antworten mit Zitat      
Hallo Haas,

FOR-Schlöeifen sind hier hübscher.

Daher möchte ich mit den zwei schleifen unten Arbeiten. Die erste soll den startwert auf 13 dann 14 dann 15 und dann 16 festlegen. Die zweite löscht das Element mit dem wert 13, 29, 45 ...

Mein Problem ist die übergeordnete schleife sie macht es 10 mal für den wert anfangswert 13.


Code:

n= xele * yele;                          % Schrittweite
for k = 1:4
    v = (n:n:zele*n) - (xele-k);       % Vektor Schrittweite mit verändertem Startwert
    o = setdiff(o, v);
end

"l" ist ein schlechter Name für eine Variable wegen der Verwechselungsgefahr mit "1". Das gleiche gilt für "o" und "0".
Das tut jetzt vielleicht immer noch nicht, was Du möchtest. Ich konnte aber der Text-Erklärung nicht wirklich folgen. Vielleicht ist es jetzt aber so übersichtlich, dass Du den Code leichter selbst anpassen kannst.

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.