필터 지우기
필터 지우기

detect smallest or bigest value of signal in stateflow and simulink

조회 수: 11 (최근 30일)
hi all..
let say i have 2 signal, first signal is the value (let say S) and second signal is the number of value (let say N), both are vector signal with 10 element(vector(1x10))
S=[3 4 5 7 8 9 11 12 13 14]
N=[1 2 3 4 5 6 7 8 9 10]
and then, i have signal C,
C=20
how if i want to detect the smallest and the biggest gap between element C and S,
for example: let say H was the value off gap between S and C: H= C-S then result H
H= [ 17 16 15 13 12 11 9 8 7 6 ]
how we detect the smallest and the bigest value H, then show the number signal it was from.
example in this case,according H value: the smallest= 6, number of signal= 10 the biggest= 17, number of signal= 1
how we do it in STATEFLOW, SIMULINK OR EMBEDDED MATLAB FUNCTION ??
THANKS,

채택된 답변

Fangjun Jiang
Fangjun Jiang 2011년 7월 14일
Okay, it can be done in Simulink, if you can follow me here. Drag a Constant block, put in [3 4 5] as its value, label its output as "S" so we can refer to it here in the post. Feed "S" to a MinMax block, label its output as "MinS". Feed "S" and "MinS" to a Relational Operator block, select "==" as the operator, label its output as "EqualS", feed "EqualS" to a Data Type Conversion block, label its output as "DoubleS". feed "DoubleS" to the first input of a Dot Product block, the second input of the Dot Product block is a Constant block with its value as [1 2 3].
Hook a Display block to the output of the Dot Product block, run simulation you will see its value is 1, which means the first element of "S" is the minimum, which is correct. Change the value of "S" to be [3 2 5], the result will be 2. Change "S" to be [3 2 1], the result will be 3.
  댓글 수: 2
Fangjun Jiang
Fangjun Jiang 2011년 7월 14일
Hope you can expand it to be used for maximum. If you S has more element, for example, 10. Make sure the value of the second Constant block is [1:10].
Luhur
Luhur 2011년 7월 14일
NICE FANG!! thanks a lot!!

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Fangjun Jiang
Fangjun Jiang 2011년 7월 13일
S=[3 4 5 7 8 9 11 12 13 14];
C=20;
H=C-S;
[MinVal,MinInd]=min(H)
MinSignal=S(MinInd)
[MaxVal,MaxInd]=max(H)
MaxSignal=S(MaxInd)
  댓글 수: 4
Luhur
Luhur 2011년 7월 13일
how we do it in simulink without EMF fang?? i already use MIN and MAX block, and now i dont know how to detect which number of signal it was in simulink.
Fangjun Jiang
Fangjun Jiang 2011년 7월 13일
The MinMax block is the right one to use. I have to ask you to clarify what do you mean signal here. When you say S=[3 4 5 7 8 9 11 12 13 14], do you mean the value of the signal S is 3 at time=0, 4 at time=t, 5 at time=2*t, etc? t could be any time step like 0.1 sec or 0.001 sec. The other meaning could be S is a vector signal with 10 elements. The first element is 3 all the time, the second element is 4 all the time, etc. The way you put S in a constant block makes it take the latter meaning. Is that what you really want?

댓글을 달려면 로그인하십시오.


Luhur
Luhur 2011년 7월 14일
i mean yes all the time fang.. later it will change by slider gain..
if S=[3 4 5 7 8 9 11 12 13 14] *S is signal value that change by slider gain
N=[1 2 3 4 5 6 7 8 9 10] *N is also signal value but not change,because it shown the sequence of the signal S.
so, in S, 3 means signal number 1, 4 means signal number 2, 5 means signal number 3 etc...
the case was like in the original question, please refer to it..

카테고리

Help CenterFile Exchange에서 Simulink Functions에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by