matlab加窗函数减少频谱泄露的问题
clc;clear all;
fs=2000;
dt=1./fs;
N=512;
n=0:1:N-1;
t=n*dt;
Wd=hamming(N);
f=n*fs./N;
s=2*cos(2*30*t);
sc=s.*Wd;
figure(1)
subplot(211)
plot(t,s)
subplot(212)
plot(t,sc)
s1=fft(s);
s2=fft(sc);
figure(2)
subplot(211)
plot(f-fs/2,abs());
axis([-400,400,0,500]);
subplot(212)
plot(f-fs/2,abs());
axis([-400,400,0,500]);
出现错误:
??? Error using ==> unknown
Matrix dimensions must agree.
Error in ==> Untitled at 22
sc=s.*Wd;
我是初学者。请问信号与窗函数是怎么乘的?是不是产生窗函数的方法错了?
谢谢! 因为Wd=hamming(N)产生的是列数组,而楼主设定的s是行数组,所以在点乘时出现错误“Matrix dimensions must agree.”把点乘时改一下:
sc=s.*Wd';
就解决了。
回复 #1 e3gyp2002 的帖子
http://forum.vibunion.com/forum/thread-46001-1-1.html楼主在程序调试中遇见问题可以参考这个原创贴
回复 #2 songzy41 的帖子
可以了,谢谢宋老师[ 本帖最后由 zhangnan3509 于 2007-12-5 12:01 编辑 ] 请问,plot(f-fs/2,abs()); 中, abs()); 为什么? http://forum.vibunion.com/forum.php?mod=viewthread&tid=46137&highlight=%B4%B0%BA%AF%CA%FD参考这个
页:
[1]