Continue to Site

Welcome to

Welcome to our site! is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

resampling of very long signals

Not open for further replies.


Newbie level 1
Aug 3, 2003
Reaction score
Trophy points
Czech Republic
Activity points
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

signal resampling matlab howto

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!

Its not easily possible in MATLAB , try to write a code in C++ etc.

Not open for further replies.

Part and Inventory Search

Welcome to