# Optimising an input signal for a system to minimise distortion of output signal

I have a discrete time-series signal which I am able to process before passing it through a system which distorts said signal. This system cannot be altered and is non-linear, but a signal can be passed through as many times as is needed (for iterative optimisation algorithms, for example). I would like to optimise the signal so that the output of the system is as similar to the original input signal as possible.

I'm currently unclear on exactly what problem I'm trying to solve is and would appreciate advice on potential approaches? I understand the concept of system identification, which gives me insight into what the system is doing, but am unsure how to apply this to the signal to try and counter these effects.

• Is the system time invariant? What sort of non-linearity does it present? – A_A Sep 8 '18 at 20:12

System is non linear so all bets are off.

Jokes aside though, wouldn't you just characterize the system, then generate an inverse system that the signal passes through first such that the effects of the original system are cancelled out?

Edit: another potential solution is to 'linearize' the system by finding the characteristics of it, then scaling your input signal such that the system behaves in a linear way. Then follow the inverse idea that I gave in my original comment.

Say that this was a loudspeaker/amplifier playing back sound. The amplifier and loudspeaker would both be ~linear at lower signals, then become increasingly nonlinear at higher signal levels. The amplifier might clip as the requested output voltage was larger than the power supply voltage. The loudspeaker might compress peaks when the membrane excursion nears its physical limits.

A first approximation might be that of a memoryless nonlinearity. Say a polynoma y(t)=ax(t)+bx(t)^2

Find a and b, and you have characterized your system. You might find that your system affects frequency response as well. Best case, this can be «slapped on» before or after the nonlinearity:

z(t) = conv(y(t), h(t))

where h(t) is some impulse response that you might be able to estimate using small signal levels.

More generally, a and b (and c and d and...) will be functions of time and input signal. The physical components will undergo heating processses that change their behaviour. That makes the problem harder.

The fundamental «nonlinearity» and «memory effects» might not be separable. Then you are into Voltera filter territory that rapidly become unfeasible unless the degree of the nonlinearity or the memory of the system is severely constrained.

The kind of large unknown, nonlinear (but probably sparse) parameterspace and accessibility of the device to do characterization seems like a good fit for modern machine learning techniques.