我已经为自适应线性合并器(最速下降)编写了以下代码,并在输入端添加了随机信号。:M = 16;
M=16;
k=[1:200];
R=[0.5 0.46;0.46 0.5];
P=[0;-0.38];
wstar=[-5 30];
s=sin((2*pi*k)/M); %input signal
d=cos((2*pi*k)/M); %desired signal
**x=s+randn(1,M);** %input signal + noise
mu=1;
for i=1:M %steepest descent algorithm
w(1)=wstar;
g(i)=2*R*w(i)-2*P;
w(i+1)=w(i)+mu*(-g(i));
end
for i=1:M
y(i) = sum(w(i)*x(i),w(i+1)*x(i+1)); %output signal
e(i) = d(i)-y(i); %error signal
end
subplot(221),plot(k,d),ylabel('Desired Signal');
subplot(222),plot(k,s),ylabel('Input Signal+Noise');
subplot(223),plot(k,e),ylabel('Error');
subplot(224),plot(k,y),ylabel('Adaptive Desired output');
由于某种原因,它表示在x = s + randn(1,N)处出现错误。谁能让我知道我哪里出错?
答案 0 :(得分:1)
s
是一个长度为200的向量(因为k = 1:200
),并且您要添加randn(1, M)
,这是一个长度为M = 16
的向量。这些应该如何加在一起?