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

Zwischenspeicherung von Daten

 

Otter222
Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 29.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2011, 11:40     Titel: Zwischenspeicherung von Daten
  Antworten mit Zitat      
Hallo,
ich habe folgendes Problem:
Ich habe ein Modell, das mit dem Discret solver simuliert wird.
(Model unten)

Ich möchte eine Schleife einbauen, die mit für jedes t=0.5 secunden deltaT um 0.1 erhöht (erniedrigt...)

Da ich mit dem Discret Solver arbeite, kann ich nicht zeitabhängig simulieren.
(richtig?)

Daher brauche ich dann einen Speicher, der mir die Werte für 5 Zeitschritte speichert.
Bisher habe ich 5 Memory Blöcke hintereinander.

Gibt es eine bessere Lösung?
Hat mir jm einen Tipp, wie ich am besten vorgehe?


PS: In Matlab sah die Lösung bisher so aus:
Code:

T_H2O = [70 112 105 90 120 113 114 100 99 88]';
iz = size(T_H2O);
n=[0:iz]';
t = [0.1:0.1:1]'; % hier at = 0.1
at= zeros(iz);

for (n=2:iz)
at(n) = t(n)-t(n-1)
end

for (n=2:iz)
a(n)=0.5/at(n)
end

% da deltat also at immer komstant schon in DIANA vorgegeben ist,
% ist auch a(n) konstant.

a2 = a(2)

Tu = 100;
Tk = 105;
To = 115;

iz = size(T_H2O);
n=[0:iz]';
deltaT=zeros(iz);

for (n=1:a2:iz)
    if T_H2O(n)<Tu
    deltaT(n)=0
    elseif T_H2O(n)>Tu && T_H2O(n)<=Tk
     deltaT(n)= deltaT(n-a2)+ 0.1
    else T_H2O(n)>Tk && T_H2O(n)<To
    deltaT(n) = deltaT(n-a2) -0.1
   
end
end

for (n=2:iz)
   deltaT(n)= deltaT(n-1)+deltaT(n)
end
 


Daten.zip
 Beschreibung:

Download
 Dateiname:  Daten.zip
 Dateigröße:  7.99 KB
 Heruntergeladen:  372 mal
Private Nachricht senden Benutzer-Profile anzeigen


Otter222
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 29.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2011, 08:50     Titel:
  Antworten mit Zitat      
kann mit jm sagen, was für Möglichkeiten ich habe, dass bei der Simulation bei einem bestimmten Embedded Matlab Function Block nur jeder 5. Wert berechnet wird?

Alles was ich bis jetzt problert hab hatte leider keinen Erfolg.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.12.2011, 09:11     Titel:
  Antworten mit Zitat      
Hallo,

du könntest einen Variable Step Discrete Solver verwenden und die Abtastzeit des Blocks anpassen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Otter222
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 29.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2011, 09:19     Titel:
  Antworten mit Zitat      
Hallo,
Danke für deine Antwort.
das mit dem Variable Step discret Solver habe ich probiert, allerdings war da das Problem, dass ich dann nur noch jeden 5. Wert bekomme und der Rest entfällt.
Die nachfolgenden vier Werte sollen dem des 5. Wertes entsprechen, sodass ich eine stufenförmige Funktion bekomme.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.12.2011, 09:33     Titel:
  Antworten mit Zitat      
Hallo,

das System muss ja trotzdem mit der Abtastzeit der anderen Blöcke simulieren - das musst du natürlich auch entsprechend in diesen Blöcken einstellen.
Um sicher zu gehen, dass jeder Block mit der richtigen Abtastzeit simuliert wird, solltest du dir die Sample Times farbig anzeigen lassen.

Falls das nicht weiterhilft, kannst du vielleicht ein kleines Beispielmodell zur Verfügung stellen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Otter222
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 29.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2011, 11:01     Titel:
  Antworten mit Zitat      
Also das ist mein aktuelles Modell, in dem ich statt alle 0.5 sec um 0.1°C erhöhe, alle 0.1sec um 0.02°C erhöhe.
Leider kann ich meine Simulation nicht so einstellen, dass ich Variable Step auf 0.5 sec setzen kann.

Prozent.zip
 Beschreibung:

Download
 Dateiname:  Prozent.zip
 Dateigröße:  9.04 KB
 Heruntergeladen:  385 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.