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

"einfaches Problem" oder doch nicht?

 

ska78
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 09:23     Titel: "einfaches Problem" oder doch nicht?
  Antworten mit Zitat      
Hallo zusammen und frohe Ostern,

ich sitze gerade über folgendem Problem:

Ich würde gerne in Simulink in eine Variable schreiben und diese direkt wieder aus dem Zyklus vorher auslesen.
Seltsamerweise hatte das einmal in einem anderen Projekt funktioniert. Nur jetzt nicht mehr. Das vereinfachte Programm habe ich in den Anhang gestellt!
Im Endeffekt soll dann da eine Variable mit 100 Zeilen entstehen, die von 1-99 hochzählt. Nicht das Zählen ist das Wichtige, sondern das man from Workspace nimmt und in die gleiche Variable wieder rein schreibt.

Hat jemand eine Idee?
Vielen Dank für jede HILFE.
Viele Grüße
Die

Test.zip
 Beschreibung:
Matlab und Simulink File zu meinem Problem. Vereinfachte Version.

Download
 Dateiname:  Test.zip
 Dateigröße:  4.97 KB
 Heruntergeladen:  782 mal
Private Nachricht senden Benutzer-Profile anzeigen


jack
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.12.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 11:11     Titel:
  Antworten mit Zitat      
Hi, was passiert denn, wenn du die Simulation startest?
Gruß
Jack
Private Nachricht senden Benutzer-Profile anzeigen
 
ska78
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 11:27     Titel:
  Antworten mit Zitat      
Hallo Jack,

dann bekomme ich folgende Meldungen:

Warning: The model 'testmodell' does not have continuous states, hence using the solver 'VariableStepDiscrete' instead of the solver 'ode45' specified in the Configuration Parameters dialog.
> In testfile at 13
Warning: Using a default value of 1.98 for maximum step size. The simulation step size will be limited to be less than this value.
> In testfile at 13

und dieVariable simmod ist von Zeile 1 bis 100 mit lauter Einsen gefüllt.

Und somit funktioniert das nicht so, wie ich das brauche. Vom Prinzip her müsste ja immer die letzte Variable ausgelesen werden und der dann 1 dazuaddiert werden. Aber irgendwie fängt das Programm immer wieder bei 0 an.
Hoffe, Du verstehst, was ich meine.

Hast Du eine Idee?
Vielen Dank und einen schönen Ostersonntag.
Viele Grüße
Dee
Private Nachricht senden Benutzer-Profile anzeigen
 
jack
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.12.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 13:15     Titel:
  Antworten mit Zitat      
OK - dann benutze doch am besten den diskreten Löser...

Außerdem hast du ungleich lange Zeilenvektoren generiert (siehe unten)!

Code:

>> length(t-Ts)

ans =

   100

>> length(simmod)

ans =

   101

>>
 
Private Nachricht senden Benutzer-Profile anzeigen
 
ska78
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 15:01     Titel:
  Antworten mit Zitat      
Hallo Jack,
nochmals danke für Deine Antwort.
Was meinst Du mit diskretem Löser?

Bei mir sind die Längen alle gleich auf 100.
Verstehe gerade nicht, wieso das bei Dir im Beispiel anders ist.
Ich lade das Beispiel noch einmal hoch, obwohl es das Gleiche sein sollte.

Im endeffekt will ich das ja in eine Embedded Funktion einbauen. Also den Zwischenteil der Addition und der Constanten 1.

Freue mich auf Deine Antwort.
Viele Grüße
Dee

Test.zip
 Beschreibung:
Matlab und Simulink File meines Problems.

Download
 Dateiname:  Test.zip
 Dateigröße:  4.97 KB
 Heruntergeladen:  756 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
jack
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.12.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 15:34     Titel:
  Antworten mit Zitat      
man man man

also doppelklickt auf
From Workspace
dann unter sample-time eine 1 eintragen
simulationsdauer auf 99 (neben dem play-button)

nun testfile nochmal durchlaufen lassen und anschließend play zum starten der simulation klicken!
Private Nachricht senden Benutzer-Profile anzeigen
 
ska78
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 15:51     Titel:
  Antworten mit Zitat      
Hallo Jack,
nochmals Danke. Sorry, aber ich bin nicht so bewandert in Matlab/Simulink.
Es sieht momentan so aus, dass wenn ich den Play-Button drücke die Variable simmod immer komplett um 1 erhöht wird (also alle 100 Zeilen).
Aber ich versuche, dass ich nur mit dem Aufruf aus Matlab beim "einmaligen Durchlauf" alle Zahlen nacheinander erhöhen. Quasi 1, 2, 3, 4 ..., 100.
Das ursprüngliche Problem habe ich ein paar Threads weiter unten schon einmal gepostet. Ich verstehe einfach nicht, wieso ich eine Variable nicht abspeichern kann und dann den Wert des vorherigen Zykluses wieder abrufen und verändern kann usw.
Oder gibt es eine Alternative?
Nochmals vielen Dank für Deine Bemühungen.
Viele Grüße
Dee
Private Nachricht senden Benutzer-Profile anzeigen
 
HansWerner
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 21.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 17:23     Titel: Warum so umständlich ?
  Antworten mit Zitat      
Habe mich mit der Datei nicht auseinandergesetzt, aber warum so umständlich ? Wenn es mit einem Memory-Block nicht geht dann verwende doch einen Data Store.
Private Nachricht senden Benutzer-Profile anzeigen
 
ska78
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2008, 17:27     Titel:
  Antworten mit Zitat      
Hallo HansWerner,
danke für Deine Antwort. Auf diese Idee bin ich auch schon gekommen. Leider hat die Umsetzung wegen fehlender Kenntnisse nicht geklappt. Und die Hilfe von Matlab hat mich auch nicht wirklich weitergebracht. Ich muss mal ein Beispiel suchen und es dann erneut so probieren.
Vielen Dank für Deine Hilfe
Viele Grüße und frohe Ostern
Dee
Private Nachricht senden Benutzer-Profile anzeigen
 
ska78
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2008, 21:45     Titel:
  Antworten mit Zitat      
Hallo,
konnte das Problem mit einem Unit-Delay-Block lösen. Dort konnte ich dann auch den Startwert initialisieren.
Danke Euch allen.
Viele Grüße
Dee
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.