You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The internal gaussian distribution function, RndGaussLim(AMean, ALim), currently uses a clipping algorithm to eliminate values above and below the specified limit argument. This creates an unwanted spike on the edges of the probability distribution curve. The improved algorithm is to eliminate these over-the-limit values by dropping them.
This function is used in the implementation of the following behaviors:
delay time for a calling station to wait before sending next transmission.
when creating a station, its Pitch is computed using Gaussian Limit function.
For Single Calls, Pitch is in range [-50, 50] (e.g. RndGaussLim(0, 50))
For other modes, Pitch is set to a value in the range [-300, 300] (e.g. RndGaussLim(0, 300)
when creating Qrm stations, their Pitch is set to a value in the range [-300, 300] (e.g. RndGaussLim(0, 300))
Steps To Reproduce
This problem was found by code inspection and cannot be readily reproduced with the application.
Expected behavior
Values outside of the limited gaussian distribution should be eliminated, not clipped.
Actual Behavior
The current behavior is clipping these values. This may cause a higher percentage appearance of these edge values.
Version information
Morse Runner version: found in 1.84, but has probably been in the code for a long time, perhaps since 1.68.
Additional context
This article has an example showing the effects of clipping a limited gaussian distribution.
BTW, I discovered this problem while looking at a reported possible audio clipping problem. The user was using a bluetooth headset during copy. Initially my thought was centered around clipping of the audio signal. This was not the case. However, I stumbled across the implementation of RndGaussLim(AMean, ALimit) and discovered it was using a clipping algorithm (min/max) which clips the value at the two end values. This technique results in a non-gaussian distribution.
Tasks
Coding
Code review and integration
Validation
The text was updated successfully, but these errors were encountered:
- The internal RndGaussLim() function was clipping values outside of the
specified limits. This resulted in a non-gaussian distribution.
- The fix is now discarding any over-limit values.
Description
The internal gaussian distribution function,
RndGaussLim(AMean, ALim)
, currently uses a clipping algorithm to eliminate values above and below the specified limit argument. This creates an unwanted spike on the edges of the probability distribution curve. The improved algorithm is to eliminate these over-the-limit values by dropping them.This function is used in the implementation of the following behaviors:
RndGaussLim(0, 50)
)RndGaussLim(0, 300
)RndGaussLim(0, 300)
)Steps To Reproduce
This problem was found by code inspection and cannot be readily reproduced with the application.
Expected behavior
Values outside of the limited gaussian distribution should be eliminated, not clipped.
Actual Behavior
The current behavior is clipping these values. This may cause a higher percentage appearance of these edge values.
Version information
Additional context
This article has an example showing the effects of clipping a limited gaussian distribution.
BTW, I discovered this problem while looking at a reported possible audio clipping problem. The user was using a bluetooth headset during copy. Initially my thought was centered around clipping of the audio signal. This was not the case. However, I stumbled across the implementation of
RndGaussLim(AMean, ALimit)
and discovered it was using a clipping algorithm (min/max) which clips the value at the two end values. This technique results in a non-gaussian distribution.Tasks
The text was updated successfully, but these errors were encountered: