有matlab高手帮我看一下这个自适应程序有啥不对?

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:59:41
为什么运行不出来呢?
clear % 清空变量空间
clc
fs=8000;
s=wavread('dsp.wav');
t=0:1/fs:(size(s)-1)/fs
x=awgn(s,20) % 加入均值为0的高斯白噪声,信噪比为10dB
u=0.6
N=64
w=ones(1,N); % 1到32都是0
k=length(s); % 信号的长度
y=zeros(1,k) ; % y从1到k都为0
e=zeros(1,k) ; % e从1到k都为
%自适应算法结构
for i=N:t*8000;
y(i)=x(i:-1:i-N+1)*w';
e(i)=s(i)-y(i);
w=w+2*u*e(i)*x(i:-1:i-N+1)/(x(i:-1:i-N+1)*x(i:-1:i-N+1)')
end
%%%%%%%%%%%%%%%%%%
figure(1)
subplot(4,1,1)
plot(t,x)
ylim([-2,2])
ylabel('带噪声的信号')
subplot(4,1,2)
plot(t,s)
ylim([-2,2])
ylabel('期望信号')
subplot(4,1,3)
plot(t,y)
ylim([-2,2])
ylabel('滤波结果')
subplot(4,1,4)
plot(t,e)
ylabel('估计误差')
问题在于不会执行那个for循环~~这到底是为什么?

for i=N:t*8000;

这句不对,t本身就是一个vector了。改一下~

for循环定义要正确,比如for i = 1:0.1:10,

照你这样写等于是for i = 64:(0:1/fs:(size(s)-1)/fs)*8000

这是个啥?