有一组已知数据,是一个正弦信号隐藏在噪声里,请问如何用matlab确定该正弦信号的频率和峰值?

来源:百度知道 编辑:UC知道 时间:2024/06/23 03:05:42
已知该组数据取样频率是1KHz,该组数据存在一个叫做y的一维数组里。希望给出详细code,谢谢~

用fft傅里叶分析撒,找到频谱上峰值最大的那个谱
fy=abs(fft(y,N));%N分析的点数,最好是2^n
w=1e3.*(0:N/2)/N;
plot(w,f(1:N/2+1))%画频谱图
找到频谱上峰值最大的那个谱,横坐标是频率,纵坐标是强度(峰峰值)

经过低通滤波器将噪声过滤掉,在将过滤后的信号画成图象可得隐藏的正弦波;
双线性法设计低通滤波器:
fp=1000;
fc=1200;
as=100;
ap=1;
fs=22000;
wp=2*fp/fs;
wc=2*fc/fs; %归一化截止频率
[n,wn]=ellipord(wp,wc,ap,as);%求数字滤波器的最小阶数和归一化截止频率
[b,a]=ellip(n,ap,as,wn);%求传递函数的分子分母系数
d=filter(b,a,y);%滤波
plot(d)%画出滤波后图形