How do I compare a current discrete value of a signal with a previous discrete value?

3 次查看(过去 30 天)
Hi, How do I compare the current discrete value with a previous discrete value? It would be nice to see a simple matlab coded example, if possible. Is there a way to do that in simulink? Thanks!

回答(4 个)

Ameer Hamza
Ameer Hamza 2018-5-27
Here is an example
x = [1 4 2 6 2 4];
y = diff(x)
y =
3 -2 4 -4 2
diff() will subtract every value with the previous value. If the value given by diff() is greater then 0, then it means that the current value is larger than the previous value, similarly, a negative value means current value is smaller then previous.

Image Analyst
Image Analyst 2018-5-27
To compare elements of a signal with the elements immediately prior to them use diff(), as Ameer showed. To compare a whole signal to a later whole signal, then you'll have to save your original signal so it can be subtracted later:
oldSignal = signal; % Save a copy of the current signal.
% Now the signal changes somehow... Now check the difference:
differenceSignal = signal - oldSignal;
That's assuming that the "comparison" you want to do is a simple subtraction and not something else, like exclusive OR or spectral change or whatever.

kat001
kat001 2018-5-27
well, this is a real-time simulation case. If the value from the previous steo (the discrete signal which i mentioned earlier) is greater than current step value, then some position movement will take place towards a positive direction. If the previous value is less than current value, then the position will move towards a negative direction.
In either case, the output position will affect the input values, i.e. the discrete signal and the loop continues. So, thats pretty much how it's look like. Any idea?
  1 个评论
Image Analyst
Image Analyst 2018-5-27
Yes, I gave you an idea. The code I gave will work for that case. Basically save your current value as the "old" value, then when you get a new value in subtract the old value from it and redefine the old value as the current value.

请先登录,再进行评论。


TAB
TAB 2018-5-27
编辑:TAB 2018-5-27
In Simulink you can use Unit delay block to extract previous step value and Relational Operator to compare.

类别

Help CenterFile Exchange 中查找有关 General Applications 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by