Signal filtering
3 views (last 30 days)
Show older comments
Hi :) I'd like to know how to divide a signal into frames (for example 25 ms frames) without overlapping. And how do I multiply each frame using the Hamming window?
Thanks!
0 Comments
Accepted Answer
Wayne King
on 2 Dec 2011
Hi Anna, If you're using reshape you can't change the number of elements. so
x = randn(10,1);
x1 = reshape(x,5,2);
is ok, but
x1 = reshape(x,6,2);
is not.
Yes, you can use buffer to overlap your signal segments.
Note that buffer() will prepend and append zeros as necessary:
x = 1:10;
x1 = buffer(x,5,2);
More Answers (1)
Wayne King
on 20 Oct 2011
You have to know your sampling rate in order to know how many samples a 25-ms frame is. Here I'll assume it's 10 kHz. So 250 samples is 25 msec and there are 40 such segments in 1 second.
x = randn(1e4,1);
x = reshape(x,250,40);
ham = repmat(hamming(250),1,40);
x = x.*ham;
Each column of x is a 25 msec segment multiplied by a Hamming window.
2 Comments
Jan
on 20 Oct 2011
I expect that "x = bsxfun(@times, x, hamming(250));" is faster than creating ham explicitely.
See Also
Categories
Find more on Hamming 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!