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