How to segment a voice signal into frames of 256 samples?

 Risposta accettata

Do you mean something like this?
x = rand(1024,1);
y = buffer(x,256);

5 Commenti

windowsize = Fs/10;
trailingsamples = mod(length(YourSignal), windowsize);
sampleframes = reshape( YourSignal(1:end-trailingsamples), windowsize, []);
Is it the way to do so?
You can do that too. Your command there (I edited it to show the format) requires only MATLAB. But you can use buffer command if you have Signal Processing Toolbox and you can achieve the same by simply say
sampleframes = buffer(YourSignal(:),windowsize)
Then if you really don't want the tail, you can remove the last column.
See the reference of buffer at
Please, can you tell me how to recover the original signal after using 'buffer'?
Saad Rehman comments to Honglei Chen:
for matlab 2016a version FRAMING is done via BUFFER function. Thumbs up!
To recover the original signal after using buffer, use the (:) operator
buffered_signal = buffer(inputsignal, length_of_buffer);
reconstructed_signal = buffered_signal(:);
This assumes that no padding was needed and that there was no overlap used. If padding was needed then to reconstruct the original you would need to know the length of the original.

Accedi per commentare.

Più risposte (2)

guada
guada il 16 Mar 2014
i think i also have a similar problem, could you also please help me with this: given a with 7.238 second duration and fs=16000, i need 25 msec per frame and overlaps 10 msec every succesive frame.

Categorie

Scopri di più su Signal Processing Toolbox in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by