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

Gleichung wird überschrieben / wegen der for Schleife

 

lonewolfhawk
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2012, 00:18     Titel: Gleichung wird überschrieben / wegen der for Schleife
  Antworten mit Zitat      
Hallo,

kann mir jemand hier behilflich sein, wenn die erste Bedingung also die erste Gleichung erfüllt ist wird die Gleichung 1. berechnet aber beider ausgabe wird sie von der 2.Gleichung überschrieben.
Hinweis nur cx wird überschrieben, die restlichen werte in der bedinungen sind richtig.
wenn aber die Zweite bedinung erfüllt ist, dann ist alles richtig.
SOL,S1L,S2L,S3L= sind variablen die Unterschiedlich zwischen 0...6 sind Den code hab ich in word anghängt, weil es hier nicht übersichtlich ist.

Code:
for C1 = 0:7
              for C0 = 0:7
                if mod(C0*S1L+S0L,7)==0 && mod(C0*S2L+S1L,7)==0 && mod(C0*S3L+S2L,7)==0;
                    for C1F= 1:7
                        if mod((C0*C1F),7)==1
                            if S0L==0 && S1L==0 && S2L==0 && S3L==0
                                C1F=0;
                            end
                            cx=(1+C1F*x);                     % 1. cx Gleichung
                            F0L=mod(-(C1F*S3L),7);
                            F1L=mod(-(C1F*F0L),7);
                        end
                    end
                elseif mod(C0*S2L+C1*S1L+S0L,7)==0 && mod(C0*S3L+C1*S2L+S1L,7)==0;
                    for C2= 1:7
                        if mod((C0*C2),7)==1
                            C1=mod(C1*C2,7)
                            cx=(1+C1*x+C2*x^2);              % 2. cx Gleichung
                            F0L=mod(-(C1*S3L+C2*S2L),7);
                            F1L=mod(-(C1*F0L+C2*S3L),7);
                        end
                    end
                end
             end  
            end


EDITED Bitte Code-Umgebung benutzen - Danke, Jan.

word.txt
 Beschreibung:

Download
 Dateiname:  word.txt
 Dateigröße:  1.03 KB
 Heruntergeladen:  281 mal
word.txt
 Beschreibung:

Download
 Dateiname:  word.txt
 Dateigröße:  1.03 KB
 Heruntergeladen:  260 mal
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: 01.07.2012, 09:50     Titel: Re: Gleichung wird überschrieben / wegen der for Schleife
  Antworten mit Zitat      
Hallo lonewolfhawk,

Ich habe Deinen Code formattiert, indem ich ihn markierte und auf den "Code"-Button geklickt habe. Das Posten als Text-Files (zum Glück kein Word-Format!) ist nicht hilfreicher. Im Endeffekt hast Du nun 3 Source-Codes gepostet, was die Klarheit der Frage reduziert.

Was bedeutet "Gleichung" in Deiner Frage? Wahrscheinlich klärt das diesen Satz:
Zitat:
wenn die erste Bedingung also die erste Gleichung erfüllt ist wird die Gleichung 1. berechnet
.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2012, 10:02     Titel:
  Antworten mit Zitat      
Hallo lonewolfhawk,
die verschachtelten Bedingungen innerhalb der Schleifen können prinzipiell keinmal,
einmal, oder sogar mehrmals erfüllt sein.
Willst Du eine Liste von allen möglichen cx?
Ürigens ist der erste if-Block völlig unabhängig von C1.

Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
lonewolfhawk
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2012, 22:21     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich meine, die erste if Bedinung in der 3.Zeile, wenn diese erfüllt wird, muss die Gleichung 1. erzeugt werden. Die internen if bedinungen dienen nur zur nomierung der Gleichung.

Und die elseif ist für die Zweite Gleichung die Voraussetzung.

Gruß
lonewh.
Private Nachricht senden Benutzer-Profile anzeigen
 
lonewolfhawk
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2012, 22:31     Titel:
  Antworten mit Zitat      
Hallo sirus,

ja das stimmt so, dass der erste if-Block völlig unabhängig von C1 ist.

Warum wird bei erfüllen der 1. Bedingung meine 1.Gleichung cx durch die 2. Bedingungsgleichung cx überschrieben.
Obwohl ich für die Werte F0L und F1L immer die Richtigen Werte heraus bekomme. Die auch durch Bedingungen abhängig sind.

Gruß
lonewh.
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2012, 23:28     Titel:
  Antworten mit Zitat      
Hallo lonewolfhawk,
wenn ich Dich richtig verstehe, soll für gegebene Sxx jeweils nur einmal
eine der beiden Bedingungen erfüllt sein?
1.) Um den Fehler zu finden, solltest Du jeweils Cxx bzw. Fxx ausgeben
lassen, falls eine der Bedingungen erfüllt ist, dann kannst Du auch
nachvollziehen, warum F0L und F1L für beide Bedingungen gerade gleich sind.
2.) Mathematisch gesehen gibt es (fast?) immer ein C1 das die Bedingung II
erfüllt, wenn irgendwann die Bedingung I erfüllt wird.
3.) Es gibt drei unterschiedliche Fälle.
a: Trivialer Fall S0L=S1L=S2L=S3L, der von keinem C abhängt und
deshalb vor allen Schleifen abgearbeitet werden sollte.
b: Bedingung I, die nicht von C1 abhängt, so dass Du eigentlich die
Schleifen C0 und C1 vertauschen solltest und dann C1 nur über
Bedingung II schleift.
c: Bedingung II, abhängig von C0, C1 und C2
4.) if mod((C0*C1F),7)==1 bzw. mit C2 verhindert effektiv, dass die
Bedingungen für C0=0 und C0=7 nie erfüllbar ist, so daß die Schleife
über C0=1:6 ausreichen würde.
Die Schleife über C1F bzw. C2 ließe sich dann durch die einfache
Relation:
C0=1 -> C1F bzw. C2 = 1
C0=2 -> C1F bzw. C2 = 4
C0=3 -> C1F bzw. C2 = 5
C0=4 -> C1F bzw. C2 = 2
C0=5 -> C1F bzw. C2 = 3
C0=6 -> C1F bzw. C2 = 6
ersetzen.

Mit ein paar Umformungen wird das Problem hoffentlich einfacher und
der Fehler leichter zu finden.

Grüße
Sirius
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.