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

Simple Iteration in Simulink

 

Samson33

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.12.2010, 21:36     Titel: Simple Iteration in Simulink
  Antworten mit Zitat      
Hallo Leute,

cool, dass man auch als Gast schreiben kann erstmal Smile

Also ich habe ein Problem bei der Implementierung eines Kalman Filters in Simulink.

Das eigentliche Problem habe ich jetzt aber runtergebrochen auf ein winziges Simulink-Modell + Programm.

Ich hoffe meine Idee is net vollkommen bescheuert.

Das Problem ist also recht simpel. Ich möchte einfach eine Iteration in Simulink haben. Das Problem sind die Initial-werte (t= 0).
Kann ich da irgendwas einbauen ?
Die If-abfrage in der *.m datei hats ja nicht gebracht.

Falls es unlösbar ist, könnt ihr mir eine andere Methode sagen ?

Viele Grüße,
Samson

ez_iteration.m
 Beschreibung:

Download
 Dateiname:  ez_iteration.m
 Dateigröße:  129 Bytes
 Heruntergeladen:  691 mal
iteration.mdl
 Beschreibung:

Download
 Dateiname:  iteration.mdl
 Dateigröße:  25.93 KB
 Heruntergeladen:  636 mal


dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 01.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2010, 09:26     Titel:
  Antworten mit Zitat      
Hallo Samson,

ich glaube,über diese Art von Problem ist jeder schon mal gestolpert. Du hast eine klassische algebraische Schleife konstruiert. Dies bedeutet, dass du für die Berechnung eines Ergebnisses bereits das Ergebnis benötigst. Du prüfst im Funktionsblock,ob der in1 0 ist, dieser ist allerdings wiederum der Ausgang des Blockes..

Als einfachste Lösung könntest du im Rückwärtszweig ein 1/z Glied (genannt Unit delay) einbauen, dies findest du bei den discrete Bausteinen.

Als Anfangswert verendest du den Wert 0 , bei sample time -1 eingeben.

Falls dir zu viele Treppen drinn sinn,kannst du ja in den Solvereinstellung eine geringere Abtastzeit einstellen.

Weiters würde ich im function Block wirklich auf 0 überprüfen,nicht auf []..
also
if A==0 anstelle von if A==[]


Hoffe, das hilft etwas

LG
Daniel
Private Nachricht senden Benutzer-Profile anzeigen
 
Samson33

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2010, 12:59     Titel:
  Antworten mit Zitat      
Hallo dany, danke für deine Antwort

dieses konnte ich mittlerweile lösen, ich habe
persistant benutzt !

jetzt hab ich wieder eine algebraische schleife am hut...
komm da auch nicht weiter, ich werde vermutlich bald schreiben ^^
 
Samson33

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2010, 14:36     Titel:
  Antworten mit Zitat      
Hallo Leute, das Problem sieht jetzt wie folgt aus:

Ich möchte so eine Art korrektur Block haben ("Sum").
Einfachhalber is das einfach ein + Block.




Bsp: Input is mal konstant 1.

Input geht zum ersten mal rein. der obere input liefert ja nix.
also is der output y = 1.
dann im 2. schritt is der obere 1 und der untere ja der input 1 , d.h. y = 2.

wie mache ich das? :s
 
dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 01.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.12.2010, 16:29     Titel:
  Antworten mit Zitat      
das ist genau die algebraische Schelfei,von der ich spreche

Deine Ansicht,dass im ersten Schritt noch nichts anliegt,ist falsch, das Ergebnis ist nicht einfach "1".

du benötigst für die Berechnung der Summe bereits das Ergebnis der Summe .. das ist die typischste algebraische Schleife die möglich ist.
Versuch mal diese Rechnung auf papier sinnvoll schreiben ..
Das geht gar nicht.. Smile

Wie ich bereits erwähnt habe,kannst du die algebraische Schelife auflösen,wenn du im Rrueckwaertszweig den 1/z reinhaengst , welchen du im discrete menue findest.



Mit diesem Block stimmt dann deine Auffassung,dass im ersten schritt noch nichts anliegt.. dann im naechten schritt dann das ergebnis aus dem vorrigen schritt herangezogen wird.

haeng den block einfach mal rein und versuchs,ich bin mir sicher,dass wird dein problem loesen ..

lg
daniel

blabla.jpg
 Beschreibung:
bild

Download
 Dateiname:  blabla.jpg
 Dateigröße:  7.62 KB
 Heruntergeladen:  1126 mal
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 - 2024 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.