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

Laufvariable in for Schleife funktioniert nicht??

 

swizz-john
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 19.05.2013, 22:24     Titel: Laufvariable in for Schleife funktioniert nicht??
  Antworten mit Zitat      
Hallo Leute,

Ich verzweifel gerade an folgendem Problem.
Ich übergebe 4 Vektoren z.B. [0,0],[6,0],[3,0] und [3,3].
Jetzte berechne ich davon die Polarkoordinaten und sortiere die
Vektoren nach den Winkeln.

Mein Ziel ist es jetzt, falls die Winkel der Koordinaten gleich sind,
den Radius noch hinzuzuziehen und nach aufsteigendem Radius die Fälle mit gleichem Winkel zu sortieren. Soweit so gut, der Code müsste meiner Meinung nach funktionieren.
Im ersten Durchlauf erkennt er bei Eingabe der obigen Vektoren, dass die ersten 3 Winkel alle 0 sind. Somit wird der Radius herangezogen. und die Richtig sortierte Indexmenge erzeugt.
Im 2. Durchaluf bleibt nur der letzte Winkel übrig, sprich x müsste =1 sein.
Problem ist, dass er das array Winkel(i) nicht richtig ausliest,obwohl
i unten auf i=4 springt und somit richtig ist im 2. Durchlauf kommt er auf x=1,2,3.
hier der code zu meinem Programm.

Ich bitte um eure Hilfe,
Schöne Grüße , swizz-john

Code:
function [ Steinerpunkt4 ] = ST4( Vektor1, Vektor2, Vektor3, Vektor4 )

Vektor=[Vektor1;Vektor2;Vektor3;Vektor4]

[theta1,rho1] = cart2pol(Vektor1(1),Vektor1(2))
[theta2,rho2] = cart2pol(Vektor2(1),Vektor2(2))
[theta3,rho3] = cart2pol(Vektor3(1),Vektor3(2))
[theta4,rho4] = cart2pol(Vektor4(1),Vektor4(2))
 
Winkel=[theta1,theta2,theta3,theta4]
Radius=[rho1,rho2,rho3,rho4]

[N,idx] = sort(Winkel)  %idx ist Index der Vektoren


                                                                           
for i=1:4
    Winkel(i)           %hier sollte im 2. Durchlauf Winkel (i) mit i=4 stehen!!!
    Winkel(4)
    x=find(N == Winkel(i))  %falls Winkel doppelt vorkommt im sort. Vekt.
    if length(x)>1      
       [y,idx2]=sort(Radius(x))    %Sortiere Doppelte Winkel nach Radius
       idx(i:length(x))=idx2
    end
   
    i=i+length(x)
end
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.05.2013, 23:28     Titel:
  Antworten mit Zitat      
Code:
das geht nicht da i deine laufvariable ist. die kannst du in der schleife nicht ändern. nimm entweder while oder eine zusätzliche variable
Private Nachricht senden Benutzer-Profile anzeigen
 
swizz-john
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 24.05.2013, 12:56     Titel:
  Antworten mit Zitat      
Super Vielen Dank!!

Mit einer while Schleife funktioniert es super!

Schöne Grüße, swizz-john
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.