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

Warum löscht es das Element nicht?

 

upt0zer0
Forum-Century

Forum-Century


Beiträge: 107
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 17:18     Titel: Warum löscht es das Element nicht?
  Antworten mit Zitat      
Hallo Leute,

folgender Code

Code:
       if (eingang(i) == 0 && eingang(i+1) == 0)
            block.OutputPort(1).Data(i) = 0.7+0.7i;
            eingang(i+1)=[];
        elseif (eingang(i) == 0 && eingang(i+1) == 1)
            block.OutputPort(1).Data(i) = -0.7+0.7i;
            eingang(i+1)=[];
        elseif (eingang(i) == 1 && eingang(i+1) == 0)
            block.OutputPort(1).Data(i) = 0.7-0.7i;
            eingang(i+1)=[];
        elseif (eingang(i) == 1 && eingang(i+1) == 1)
            block.OutputPort(1).Data(i) = -0.7-0.7i;
            eingang(i+1)=[];
        end


Das ganze ist in einer For-Schleife (1:4) und im Vektor 'eingang' sind unterschiedlich viele Elemente, aber immer mindestens 8. Jetzt soll hier geschaut werden, was das i-te und (i+1)-te ELement sind und entsprechend eins ausgegeben werden. Damit nachher kein Element doppelt gelesen wird, soll dann das (i+1)-te gelöscht werden und mit dem (i+2)-ten weitergemacht werden, das dann beim zweiten Schleifendurchlauf ja das ist was aufgerufen wird.

Nur leider löscht mein Befehl einfach das Element nicht.

Das ganze befindet sich in einer Simulink S-Function.

Bin dankbar für jede Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 19:04     Titel:
  Antworten mit Zitat      
Hallo Zero,
es gibt effizientere und übersichtlichere Methoden um Paare von Zahlen
anzusprechen.
Code:
eingabe(2*i-1)

oder vor der Schleife ein
Code:
eingabe=reshape(eingabe(1:8),2,[]);

um dann mit
Code:
eingabe(1,i)
bzw.
Code:
eingabe(2,i)

die Zahlen zu indizieren.

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

Forum-Century

Forum-Century


Beiträge: 107
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 21:23     Titel:
  Antworten mit Zitat      
Problem ist, dass die Elemente auf jedenfall gelöscht werden müssen. Da im nächsten Schritt nicht nur 2, sondern manchmal auch 4 Elemente ausgelesen werden müssen, was komplett Variabel sein muss, also mal nur 4er, mal 4 2 4, mal 2 2 2 4.... deshalb muss ich umbedingt löschen, mit den anderen wüsst ich net wie das gehen sollte
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 23:01     Titel:
  Antworten mit Zitat      
Hallo!

Dann würd ich es mit einem zweiten Index machen:
Code:
k=0;
for i=1:N
  if eingabe(k)==0 && eingabe(k+1)==0
      k=k+2
[...]
 


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

Forum-Century

Forum-Century


Beiträge: 107
Anmeldedatum: 10.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2012, 07:54     Titel:
  Antworten mit Zitat      
Du hast recht, ich bin so blöd Very Happy oh man, danke, jetzt läufts!
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.