Simulink: Wert auslesen

Gast #3795260
Lesenswert?

Hallo,



Im Anhang findet man ein Bild.
Wie kann man den X_Achse-Wert(Zeit) in Simulink auslesen,wenn der größte 
Y_Achse-Wert auftritt?

Also, interessiere mich den blauen Punkt im Diagram.Zu dieser Zeit ist 
der Y-Wert max.

Gibt's einen Block in Simulink, der das tut?

Danke im Voraus.

JEL
Angehängte Dateien:
#3795874
Lesenswert?

Hi,

soll das eine Echtzeit Simulation werden, oder simulierst du so schnell 
wie möglicht? Kannst du das Simulierte speichern (z.B. mit dem scope 
oder dem to workspace block)? Wenn ja ist das doch einfach nur das 
Maximum. Die Zeit steht sogar automatisch mit in dem gespeicherten 
Vektor.

Wenn du nicht speichern kannst, musst du eine embedded matlab function 
oder sowas benutzen und immer den aktuellen Wert mit dem davor 
vergleichen. Ist der aktuelle größer, könnte dies das Maximum sein. 
Sonst nicht. Es gibt eine Uhr (clock, guck bei sources), die gibt dir 
die aktuelle Simulationszeit an. Damit könntest du dir was zusammen 
basteln.

Ganz vielleicht so grob:
1
function [maxValOut, maxTimeOut] = calcMax(currentVal,currentTime)
2
persistent maxVal
3
persistent maxTime
4

5
if(isempty(lastVal))
6
   maxVal = -inf;
7
   maxTime = 0;
8
end
9

10
if(val > maxVal) % aktueller messwert ist größer, als alles andere bisher, könnte also das maximum sein
11
  maxVal = currentVal;
12
  maxTime = currentTime;
13
end
14

15
maxValOut = maxVal; % zuweisen, weil es glaub' ich nicht geht, persistente Variablen zurückzugeben
16
maxTimeOut = maxTime
17
end

edit:

du kannst natürlich auch alles nur mit "fertigen" Blöcken bauen. Es gibt 
einen max block und es gibt triggered subsystems und logische 
Verknüpfungen, damit kann man auch fix was zusammen klicken

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren