Recovering a signal that was upsampled by non-integer factor I have a data sequence $G[n]$ that is upsampled at the transmitter of a communication system by a non-integer factor ($1.5$ to be precise). At the receiver, I am supposed to downsample the data and recover the sequence $G[n]$.

In MATLAB, I am implementing both the transmit and receive signals. When I upsample the signal $G[n]$ by integer factors at the transmitter and then downsample the received signal by the same integer factors, I am able to successfully recover the exact $G[n]$, and continue further processing. 

However, when I upsample $G[n]$ by a non-integer factor $1.5$, and then downsample the received data by the same factor $1.5$, I do not get the exact sequence $G[n]$ that was transmitted. In MATLAB, for the transmitted sequence, I simply used commands upsample with factor $3$ and downsample with factor $2$. At the receiver I upsampled by factor $2$ and then downsampled by factor $3$.

Is there a way to recover the exact sequence $G[n]$ at the receiver even if it was upsampled by a non-integer factor at the transmitter?

~ryan
The Sampling operation (both upsample and downsample) depends on two very critical conditions: 

1- The existance and applicability of ideal frequency selective filters

2- The operated signal being strictly bandlimited 

For most practical systems these two critical conditions are only approximately met. Hence the computational results by those practical systems are only approximate and not exact.

Note that in case of simple but crude interpolation (upsampling) by zero-order hold, which requires no filter at all as being just a sample replication, you can exactly recover the original samples due to the simplicity of the operation. 

Unless some advanced algorithms are utilized, therefore, some deviation (but controllable) is expected at the output of any practical sample rate conversion systems.