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

 Réponse acceptée

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

5 commentaires

Anurag Pujari
Anurag Pujari le 25 Fév 2013
Modifié(e) : Honglei Chen le 25 Fév 2013
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.

Connectez-vous pour commenter.

Plus de réponses (2)

guada
guada le 16 Mar 2014

0 votes

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.
sufyan masood
sufyan masood le 23 Juil 2018

0 votes

how to decompose audio signal in transfered domain ?

Catégories

En savoir plus sur Signal Processing Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by