I have 228000 samples of 1 second BPSK signal (with noise) which is shaped with raised-cosine pulse, rollof factor = 1. Signal data rate is 1187.5 symbols/s. I tried to obtain __receive filter__ in matlab using rcosdesign function and then use filtfilt in order to convolve it with my signal.

I was sure that value: sps (which I assume means SamplesPerSymbol) will be 228000/1187.5 = 192 (samples per second divided by symbols per second), but output of filtfilt is 100% bad.

matlab code: https://pastebin.com/jvM1b63E

plot ('before filter' is multiplie by 90):

https://imgur.com/a/7pXYoCc

I don't know about that specific Matlab function, but I woulod assume 'sps' to stand for samples-per-second and thus 228000...

The MATLAB on-line documentation for the rcosdesign function states that sps means Samples Per Second:

`sps`

— Samples per symbol

positive integer scalar

Number of samples per symbol (oversampling factor), specified as a positive integer scalar.

Data Types: `double`

| `single`

I'm not sure what "100% bad" means, but remember that rcosdesign can generate a square root raised cosine or a normal raised cosine (the latter is obtained by convolving the square root filter with itself). I'm assuming that you are trying to decode a signal transmitted over a noisy channel. Do you have info on what kind of pulse shaping was used at the transmitter? In any case, it's worth exploring the shape parameter:

returns a square-root raised cosine filter when you set `b`

= rcosdesign(`beta`

,`span`

,`sps`

,`shape`

)`shape`

to `'sqrt'`

and a normal raised cosine FIR filter when you set `shape`

to `'normal'`

.