|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
各位大侠.昨天老师给了个算法,让使用matlab 进行编程仿真,小弟是个初学者,对matlab一点都不熟悉,费了好大功夫才写了这么一点,还老提示错误,谁能帮忙给看看修改下啊。我把算法的大概意思说说:
给一个正弦信号g(t),对它做N点采样等到g(n),它的DFT系数为Gk (k是下标),经过变形得到Gk的表达式为:1,取Gk的最大为2.那么被估计信号的频率为3.
1. 2. 3. 都是公式,打不上来.所以发个附件了,希望大家能看看.
我的目的是将程序写出来看看估计的频率与实际频率的差值,并把它的频谱图给画出来.如果能把算法的估计方差得出来更好,可我不知道用哪个命令,希望大家帮帮我.. 谢谢大家.
这是我写的程序:
clear all;
N=1000;
a=2;
f0=100;
ot=1;
n=0:N-1;
T=N/ot;
k=0:N-1;
V(k)=((k)*Ws/N)-W0;
W(s)=(2*pi)/ot;
W0=2*pi*f0;
g(s)=a*cos(2*pi*f0*t);
noise=1*rand(1,N);
g(n)=a*exp(j*2*pi*n*ot);
d=npise+g(n);
for k=0;N-1;
G(k)=a*(exp(j*(1-N)))*(sin(N*V(k)*ot/2))/(sin(V(k)*ot/2));
end;
G(k0)=max(G(k));
if G(k0+1)<=G(k0-1);
r=-1;
else r=1;
f=((k0)+((r*(G(k0+r))/(G(k0)+G(k0+r)))));
figure(2.1);
plot(g(s));
title('正弦信号');
Xlabel('频率');
Ylabel('频率');
axis [0,N,-2.5,2.5];
grid on;
figure(2.2)
plot(d);
title('噪声信号');
figure(2.3);
plot(abs(fft(g(n))));
title('频谱');
Xlable('k');
Ylable('幅度');
[ 本帖最后由 eight 于 2007-5-27 22:01 编辑 ] |
|