Doubt on data of a SISO system

Hello all,
How can I know if the relationship between these data is linear or nonlinear?
u=[0.158 0.105 0.158 0.158 0.158 0.158 0.105 0.158 0.105 0.105 0.158 0.158 0.158 0.158 0.211 0.211 0.158 0.105 0.158 0.211 0.158 0.105 0.105 0.105 0.158 0.158 0.158 0.158 0.158 0.158]
y=[0.760 0.759 0.757 0.759 0.763 0.763 0.763 0.767 0.770 0.771 0.770 0.770 0.766 0.758 0.758 0.758 0.757 0.757 0.756 0.753 0.750 0.749 0.749 0.754 0.756 0.756 0.756 0.756 0.755 0.755]
Where, u is the input and y is the output, and 0.158 really indicate the same location. Consider that there are no errors in the measured signals.
In fact, I want to know if the relationship between u and y is linear or nonlinear.
Does anyone have any suggestions?
Thanks.
[Information merged from answer]
I found this paper:
S.A. Billings, W.S.F. Voon (1983), Structure detection and model validity tests in the identification of nonlinear systems, IEE Proceedings, Vol. 130, No. 4, JULY 1983.
In Section 4 the authors use a high-order correlation function applied to the response signal performed in a linear identification. Then, if the result is within the confidence inteval of 95% means that the system is linear.
How can I implement the function described by Billings e Voon in matlab? If I'm not mistaken ,I will need to use a FIR model, is not it?
Can you help me with this?
Thanks

Answers (1)

Walter Roberson
Walter Roberson on 27 Jan 2012
If one accepts that there are errors in the measurement of the values, then you cannot prove that the relationship is non-linear: the best you could do would be to calculate an error term.
The multiple occurrences of 0.158 in u (or is it x?): are those intended to represent the exact same location, or are they intended to indicate locations that are certainly different but are the same to within 3 decimal places?

6 Comments

If there are no errors in the measurements, then the fact that there are multiple copies of the same x but which have different y, establishes that y is not any deterministic function of x; likewise one can easily establish that x is not any deterministic function of y.
Linear systems are always bijective, but your system is not either "one-to-one" _or_ "onto".
The non-linear relationship of your data becomes quite clear if you
scatter(x,y)
This is true, but for longer periods of data, the cross- correlation function indicates a significant relationship.
How can I measure how much linearity or nonlinearity have these data ?
[ux, ua, ub] = unique(x);
[P,S] = polyfit(x, y, 1);
[Y, delta] = polyval(P, ux, S);
%Y are the mean y at the unique x positions, and delta are one standard deviation for each Y.
%visual representation
plot(ux, Y, 'b', ux, Y + delta, 'g--', ux, Y - delta, 'g--', x, y, 'c*')
or if you have the stats toolbox and just want the visual representation,
[ux, ua, ub] = unique(x);
xlab = cellstr(num2str(ux.'));
boxplot(y, xlab(ub));
In the above, if the measurements are considered to be exact, then a non-zero standard deviation for any unique x point establishes that the system is non-linear.
Emanual, I have not read that paper, and I have not studied system identification and I have not studied digital filters. I would have to do a fair bit of reading to figure out how to implement an algorithm such as that. I do not have the resources for doing that.
Walter, I think the CRA algorithm calculates the correlation functions of high order.
Thanks for helping me!

Sign in to comment.

Categories

Asked:

on 27 Jan 2012

Community Treasure Hunt

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

Start Hunting!