How to detect sequence signal explicitly

1 回表示 (過去 30 日間)
Luhur
Luhur 2011 年 7 月 13 日
hi all
let say i have vector signal V (1x5): V=[2 4 1 7 9]
how we can get in which position is our signal:
for example, by V, then 4 is signal number 2 or 9 is signal number 5. how we can get like that in simulink???
thanks

採用された回答

Doug Eastman
Doug Eastman 2011 年 7 月 13 日
If you are using R2010a or later you can use the Relational Operator block in Logic and Bit Operations to compare the vector V and the signal S using the == operator, then send that output to the Find Nonzero Elements block in Math Operations.
  2 件のコメント
Luhur
Luhur 2011 年 7 月 13 日
why find non zero element in math operation??? i just want to get the positio of the signal.
for example:
if value V is the signal, V=[2 4 1 7 9]
and S is the number of signal position, S=[1 2 3 4 5]
let say we after some condition value V that appear is 9, then also appear the number of signal position which is 5 because 9 at the end of signal S which is signal number 5.
get it???
Doug Eastman
Doug Eastman 2011 年 7 月 13 日
From what I understand you want a system with two inputs and one output. One input is a vector (V), say [2 4 17 7 9], the other is a signal (S), say 7. You want the output to be the position of S in V, in this case 4. Is that right?
If so, that's exactly what I'm describing above. The relational operator will output a vector [0 0 0 1 0] where S==V, then the find block will output the index of that location, in this case 4. Make sense?

サインインしてコメントする。

その他の回答 (1 件)

Luhur
Luhur 2011 年 7 月 14 日
i see.. but doug, after i tried it, the error in simulink was in find nonzero elements block...
the error was: The signal at output port 1 of 'detect_signal/Find Nonzero Elements' is a variable-size signal with a nondiscrete sample time. The sample time for any variable-size signal must be discrete.
  2 件のコメント
Doug Eastman
Doug Eastman 2011 年 7 月 14 日
Yes one of the limitations of this block is that it will need to be run with a discrete sample time. Is that acceptable? If so, you can enter the sample time in the block (i.e. enter 0.01 if you want the block to run 100 times a second).
Luhur
Luhur 2011 年 7 月 14 日
nice doug,another alternative. but i prefer the answer in this post http://www.mathworks.com/matlabcentral/answers/11500-detect-smallest-or-bigest-value-of-signal-in-stateflow-and-simulink
THANKS DOUG!!! NICE!!!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSources についてさらに検索

Translated by