e3gyp2002 发表于 2007-12-5 10:54

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;

我是初学者。请问信号与窗函数是怎么乘的?是不是产生窗函数的方法错了?
谢谢!

songzy41 发表于 2007-12-5 11:14

因为Wd=hamming(N)产生的是列数组,而楼主设定的s是行数组,所以在点乘时出现错误“Matrix dimensions must agree.”把点乘时改一下:
sc=s.*Wd';
就解决了。

zhangnan3509 发表于 2007-12-5 11:34

回复 #1 e3gyp2002 的帖子

http://forum.vibunion.com/forum/thread-46001-1-1.html

楼主在程序调试中遇见问题可以参考这个原创贴

e3gyp2002 发表于 2007-12-5 11:38

回复 #2 songzy41 的帖子

可以了,谢谢宋老师

[ 本帖最后由 zhangnan3509 于 2007-12-5 12:01 编辑 ]

alicia6 发表于 2008-4-6 12:07

请问,plot(f-fs/2,abs()); 中, abs());   为什么?

旧言虐心 发表于 2017-1-3 09:37

http://forum.vibunion.com/forum.php?mod=viewthread&tid=46137&highlight=%B4%B0%BA%AF%CA%FD参考这个
页: [1]
查看完整版本: matlab加窗函数减少频谱泄露的问题