What is the difference between rcosdesign and fdesign.pulseshaping?

18 views (last 30 days)
The release notes on the Signal Processing Toolbox say that firrcos and fdesign.pulseshaping are deprecated by rcosdesign, and a little bit farther it gives specific code for converting from fdesign.pulseshaping to rcosdesign. Specifically, it says:
n1n = rcosdesign(Beta,span,sps);
n1n = n1n / max(n1n) * (-1/(pi*sps) ...
* (pi*(Beta-1) - 4*Beta))
is equivalent to:
sps = 6;
span = 4;
Beta = 0.25;
f1 = fdesign.pulseshaping(sps, ...
'Square Root Raised Cosine', ...
'Nsym,Beta',span,Beta);
d1 = design(f1);
n1 = d1.Numerator
which appears to be true. However, can anyone explain what the
n1n = n1n / max(n1n) * (-1/(pi*sps) ...
* (pi*(Beta-1) - 4*Beta))
is doing? In other words, what is the difference between these two functions such that some connector code is needed to go from one to the other? From a rough understanding, it looks like it is normalizing the values, but then not really sure on the rest.

Answers (1)

Shivam
Shivam on 29 Apr 2024
Hi Jon,
I understand that you want to know the difference between 'fdesign.pulseshaping' and 'rcosdesign' and why the coefficients obtained from 'rcosdesign' function are normalized.
It's important to note that the 'fdesign.pulseshaping' function has been deprecated as of R2023b, making 'rcosdesign' the recommended alternative.
Here are the significant differences between the 'rcosdesign' and 'fdesign.pulseshaping' functions that will help you understand them better:
Scaling Factor
  • 'fdesign.pulseshaping' includes a normalization factor, ensuring no gain is introduced to the signal during filtering.
  • 'rcosdesign' introduces a gain in the signal, as observed in the impulse response plot, which might not be desirable for all applications.
Signal Gain:
  • In 'fdesign.pulseshaping', there's no gain applied to the signal, making it preferable for applications where maintaining the original signal amplitude is critical.
  • In contrast, 'rcosdesign' can increase the signal's amplitude, which may need to be adjusted based on the application's requirements.
Moreover, the coefficients of 'rcosdesign' are normalized to match those from the 'fdesign.pulseshaping' function, ensuring a smooth replacement without impacting the output's integrity.
You can observe the differences mentioned above through the provided workaround:
% Example inputs
Beta = 0.25;
span = 2;
sps = 2;
% Using fdesign.pulseshaping
d = fdesign.pulseshaping(sps,'Square Root Raised Cosine', 'Nsym,Beta',span,Beta);
filt = design(d).Numerator; % -0.0321 0.3109 0.5342 0.3109 -0.0321
% Using rcosdesign
n1n = rcosdesign(Beta, span, sps); % -0.0463 0.4484 0.7704 0.4484 -0.0463
% Normalization
n1n = n1n / max(n1n) * (-1/(pi*sps) * (pi*(Beta-1) - 4*Beta)) % -0.0321 0.3109 0.5342 0.3109 -0.0321
You can learn more about 'rcosdesign' through the provided documentation:
I hope this answers your query.
Thanks

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!