# resampling of very long signals

Status
Not open for further replies.

#### hudla

##### Newbie level 1
matlab resample signal

I'd like to ask about an effective ways how to arbitrarily resample very long signals (e.g. several millions of samples). My signal is a trace from oscilloscope (which has fixed sampling ferequencies, e.g. 100 MS/s, 1 GS/s, 2.5 GS/s) containing data with arbitrary symbol rate. I need to apply a root-rised cosine (RRC) filter to this signal rcosflt(x, Fd, Fs). The problem is, that the ratio Fs/Fd has to be an integer number, which is not always true for an arbitrary symbol rate. Thus I want to resample the signal in order to obtain Fs/Fd integer. I tried to use resample(x,p,q) Matlab function (Signal Process. Toolbox), but usually I need very big p, q numbers to do it.

Example: sampling frequency Fs = 100 MS/s, sample rate Fd = 5.676 MS/s, the length of signal is 2 millions of samples. Thus I need p = 100 000 and q = 5676 to resample this signal. Such ratio is impossible to calculate on an average PC for 2 megasamples long signal due to memory.

Then I thought about a piecewise-like resampling, i.e. to take lets say 1000 samples, resample them and to repeat it 2000 times. It doesn't work well, since resample function in Matlab assumes the signal to be zero at times before and after the given samples, so an amplitude error is introduced at the beginning and at the end of the resampled signal (due to filtering process). Another problem - the resampled signal is then very long, to be exact ceil(length(x)*p/q) = approx. 35 Msamples, which is really impossible to filter with rcosflt function on average PC.

Any ideas how to do it effectively and without introducing additional amplitude errors to the signal?

Thanks, Martin

#### Petre Petrov

##### Member level 3
signal resampling matlab howto

Hello!
It is complicated and may be the “standard solutions” are not the best solutions.
You could try:
* re-sample between two zero crossings or between any two appropriate points
* cut the signal into parts, approximate it as a sum of the simplest band limited signals, or just as sum of sine and cosine signals;
* may be the data is not exactly “arbitrary” and you will find the good approximation;
* piecewise-like resembling is too simple. May be approximation with sum of two or three sine functions is better
* try to add to the signal some useful data
Good luck!
BR

##### Junior Member level 1
Its not easily possible in MATLAB , try to write a code in C++ etc.

Status
Not open for further replies.