声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4090|回复: 5

[FFT] matlab加窗函数减少频谱泄露的问题

[复制链接]
发表于 2007-12-5 10:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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([s1(N/2+1:N) s1(1:N/2)]));
axis([-400,400,0,500]);
subplot(212)
plot(f-fs/2,abs([s2(N/2+1:N) s2(1:N/2)]));
axis([-400,400,0,500]);

出现错误:
??? Error using ==> unknown
Matrix dimensions must agree.

Error in ==> Untitled at 22
sc=s.*Wd;

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

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2007-12-5 11:14 | 显示全部楼层
因为Wd=hamming(N)产生的是列数组,而楼主设定的s是行数组,所以在点乘时出现错误“Matrix dimensions must agree.”把点乘时改一下:
sc=s.*Wd';
就解决了。

评分

1

查看全部评分

发表于 2007-12-5 11:34 | 显示全部楼层

回复 #1 e3gyp2002 的帖子

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

楼主在程序调试中遇见问题可以参考这个原创贴
 楼主| 发表于 2007-12-5 11:38 | 显示全部楼层

回复 #2 songzy41 的帖子

可以了,谢谢宋老师

[ 本帖最后由 zhangnan3509 于 2007-12-5 12:01 编辑 ]
发表于 2008-4-6 12:07 | 显示全部楼层
请问,plot(f-fs/2,abs([s1(N/2+1:N) s1(1:N/2)])); 中, abs([s1(N/2+1:N) s1(1:N/2)]));   为什么?
发表于 2017-1-3 09:37 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-18 10:47 , Processed in 0.218470 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表