hanning ,hamming window in matlab?

24 次查看(过去 30 天)
how do Hanning and Hamming window in matlab?
when must I do these window after DFT signal or before DFT signal?

采纳的回答

Wayne King
Wayne King 2013-11-26
编辑:Wayne King 2013-11-26
Before you take the DFT
hamming() or hann()
t = 0:0.001:1-0.00;
x = cos(2*pi*100*t)+randn(size(t));
winvec = hamming(length(x)); % hann(length(x));
xdft = fft(x'.*winvec);
plot(abs(xdft))
  6 个评论
Wayne King
Wayne King 2013-11-26
You can put them in a matrix and multiply them all at once.
X = randn(100,20);
h = hamming(100);
h = repmat(h,1,20);
X = X.*h;
Mary Jon
Mary Jon 2013-11-26
编辑:Mary Jon 2013-11-26
How put 20 signals with length 33 in matrix? s1=first signal, s2=second signal,and so on and where is DFT in your code?

请先登录,再进行评论。

更多回答(2 个)

Wayne King
Wayne King 2013-11-27
编辑:Wayne King 2013-11-27
That depends on how they are in your workspace. If you have 20 separate vectors, then just do this.
I'll assume they are column vectors and I'll just create 3 signals here.
s1 = randn(33,1);
s2 = randn(33,1);
s3 = randn(33,1);
Sig = [s1 s2 s3];
Now window them as before:
h = hamming(33);
Sig = Sig.*repmat(h,1,3);
Now take the DFT
SigDFT = fft(Sig);
Obviously, you have to make adjustments for the 20 columns above:
repmat(h,1,20)
for example
  1 个评论
Mary Jon
Mary Jon 2013-11-27
I have row vectors not column vectors, s1=[1 2 3 4] s2=[3 5 6 6] and so on
when applied yor code in to my signals I get this error
Error using ==> times Matrix dimensions must agree.

请先登录,再进行评论。


Wayne King
Wayne King 2013-11-27
If you have row vectors you have to make the necessary adjustment. Just convert them to column vectors.
s1 = s1';
  3 个评论
Mary Jon
Mary Jon 2013-11-27
Thank you so much for every thing,Wayne

请先登录,再进行评论。

产品

Community Treasure Hunt

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

Start Hunting!

Translated by