I am looking for a algorithm that can detect the rate of symbols in a base-band signal.

The [Gardner method](http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=221081) is a way to cancel out the timing drift and synchronize the receiver to sender when the symbol rate (number of samples per symbol) is known. The MATLAB also provides [a package](http://www.mathworks.com/help/toolbox/commblks/ref/comm.gardnertimingsynchronizerclass.html) which implements Gardner method.

But what if we don't know the symbol rate? I found some proposed methods like using [cyclostationary](http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=831861) properties of signals.

Is there any package/implementation of these methods (or any other method) in MATLAB or C symbol rate estimation?

---

**Update #1:**

[This is](http://www.mathworks.com/matlabcentral/fileexchange/16742) a simple implementation which uses cyclostationary properties to estimate baud rate, but it is not suitable for large inputs like wave files.

---

**Update #2:**

After demodulating and filtering the received signal I have a basedband signal like:
![enter image description here](https://i.stack.imgur.com/Ek9Z4.png)

Symbols are encoded as different shapes in this signal (e.g. different levels of voltage if the sender uses square shape filter). 
As we can see, the highest frequency in this signal is not the symbol-rate. 

I am not seeking for a new solution/idea to estimate symbol rate. I am looking for an implementation of a known method (like cyclostationary-based or wavelet-based methods) for symbol rate estimation.