Incorrect downsampling audio range

Hi, I have an .wav input audio with the signal in the range [-1;1] at 44.1kHz and I try to apply a down-sampling to about 2kHz but as result I have a signal that exceed the original audio range [-1;1]. It seen like the anti-aliasing filter amplify the signal. I suspect it may be because the filter is not ideal or the algorithm introduce some kind of distorsion.
Below is the code:
[x,F]=audioread('example.wav');
Fs=F/24; %1837.5Hz
x_decimate=decimate(x,F/Fs,2,'iir');
Results:
max(x)
1.000
min(x)
-1.000
max(x_decimate)
1.1108
min(x_decimate)
-1.1078
What is wrong? Am I making a mistake?
Thank you

4 Comments

What properties do you want in the downsampled signal? Should it be filtered during the downsampling process? You can also see downsample().
I need to reduce the computation cost, so one technique is reduce the signal frequency.
The signal shold be filtered before the downsampling to be in order with the shannon-Nyquist criterion. The signal shold be filtered before the downsampling to be in order with the shannon-Nyquist criterion. The decimate() function is similar to do a filtered followed by a downsampling.
What are the issues with values going beyond -1 and +1? I guess if the decimated signal looks similar to the original signal, then it should not be a problem. You can also consider rescaling then filtered so that it remains in the range of -1 to 1.
In my algortihm I want to use a quantifier scheme in the future, so signal in the [-1,+1] range is a must. If I rescale the signal I need before to know how much, so it is no a good solution.
I only need to know why the decimated signal looks like it amplify the original signal. Maybe the decimate algorithm introduce some kind of distorsion.

Sign in to comment.

Answers (0)

Categories

Find more on Simulation, Tuning, and Visualization in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!