运行Matlab时出现错误?Attempted to access rxd(500); index out of bounds because numel(rxd)=3.%用Matlab实现FIR滤波器,并将先前随机产生的500个样本输入,得到最佳估计.clear;clf;sita=0;pi/249.5:2*pi;xnoise=sqrt(0.05)*randn(1,
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 23:24:53
![运行Matlab时出现错误?Attempted to access rxd(500); index out of bounds because numel(rxd)=3.%用Matlab实现FIR滤波器,并将先前随机产生的500个样本输入,得到最佳估计.clear;clf;sita=0;pi/249.5:2*pi;xnoise=sqrt(0.05)*randn(1,](/uploads/image/z/11827801-1-1.jpg?t=%E8%BF%90%E8%A1%8CMatlab%E6%97%B6%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%3FAttempted+to+access+rxd%28500%29%3B+index+out+of+bounds+because+numel%28rxd%29%3D3.%25%E7%94%A8Matlab%E5%AE%9E%E7%8E%B0FIR%E6%BB%A4%E6%B3%A2%E5%99%A8%2C%E5%B9%B6%E5%B0%86%E5%85%88%E5%89%8D%E9%9A%8F%E6%9C%BA%E4%BA%A7%E7%94%9F%E7%9A%84500%E4%B8%AA%E6%A0%B7%E6%9C%AC%E8%BE%93%E5%85%A5%2C%E5%BE%97%E5%88%B0%E6%9C%80%E4%BD%B3%E4%BC%B0%E8%AE%A1.clear%3Bclf%3Bsita%3D0%3Bpi%2F249.5%3A2%2Api%3Bxnoise%3Dsqrt%280.05%29%2Arandn%281%2C)
运行Matlab时出现错误?Attempted to access rxd(500); index out of bounds because numel(rxd)=3.%用Matlab实现FIR滤波器,并将先前随机产生的500个样本输入,得到最佳估计.clear;clf;sita=0;pi/249.5:2*pi;xnoise=sqrt(0.05)*randn(1,
运行Matlab时出现错误?Attempted to access rxd(500); index out of bounds because numel(rxd)=3.
%用Matlab实现FIR滤波器,并将先前随机产生的500个样本输入,得到最佳估计.
clear;
clf;
sita=0;
pi/249.5:2*pi;
xnoise=sqrt(0.05)*randn(1,500);%产生x轴方向噪声
ynoise=sqrt(0.06)*randn(1,500); %产生y轴方向噪声
x=cos(sita)+xnoise;%产生x轴方向观测信号
y=sin(sita)+ynoise;%产生y轴方向观测信号
%产生维纳滤波中x方向上观测信号的自相关矩阵
rxx=xcorr(x);
for i=1:100
for j=1:100
mrxx(i,j)=rxx(500-i+j);
end
end
xd=cos(sita);
%产生维纳滤波中x方向上观测信号与期望信号的互相关矩阵
rxd=xcorr(x,xd);
for i=1:100
mrxd(i)=rxd(499+i);
end
hoptx=inv(mrxx)*mrxd’;%由维纳-霍夫方程得到的x方向上的滤波器最优解
fx=conv(x,hoptx); %滤波后x方向上的输出
nx=sum(ab(xd).^2);
eminx=nx-mrxd*hoptx; %x方向上最小均方误差
%产生维纳滤波中y方向上观测信号的自相关矩阵
ryy=xcorr(y);
for i=1:100
for j=1:100
mryy(i,j)=ryy(500-i+j);
end
end
yd=sin(sita);
%产生维纳滤波中y方向上观测信号与期望信号的互相关矩阵
ryd=xcorr(y,yd);
for i=1:100
mryd(i)=ryd(499+i);
end
hopty=inv(mryy)*mryd’;%由维纳-霍夫方程得到的y方向上的滤波器最优解
fy=conv(y,hopty);%滤波后y方向上的输出
ny=sum(abs(yd).^2);
eminy=ny-mryd*hopty;%y方向上最小均方误差
subplot(2,4,1)
plot(x,d);
title(‘x方向期望信号’);
subplot(2,4,2)
plot(xnoise);
title(‘x方向噪声信号’);
subplot(2,4,3)
plot(x);
title(‘x方向观测信号’);
subplot(2,4,4)
n=0:500;
plot(n,eminx);
title(‘x方向最小均方误差’);
subplot(2,4,5)
plot(yd);
title(‘y方向期望信号’);
subplot(2,4,6)
plot(ynoise);
title(‘y方向噪声信号’);
subplot(2,4,7)
plot(y);
title(‘y方向观测信号’);
subplot(2,4,8)
plot(n,eminy);
title(‘y方向最小均方误差’);
figure;
plot(xd,yd,’k’);
hold on;
plot(x,y,’b:’);
hold on;
plot(fx,fy,’g-’);
title(‘最终结果’);
要怎么修改程序啊?
运行Matlab时出现错误?Attempted to access rxd(500); index out of bounds because numel(rxd)=3.%用Matlab实现FIR滤波器,并将先前随机产生的500个样本输入,得到最佳估计.clear;clf;sita=0;pi/249.5:2*pi;xnoise=sqrt(0.05)*randn(1,
rxd这个范围超出了 定义出了问题
xd=cos(sita);问题出在这句话上,上面定义的sita一直等0 xd的值当然等于1
clear;
clf;
sita=0:pi/249.5:2*pi;
xnoise=sqrt(0.05)*randn(1,500);%产生x轴方向噪声
ynoise=sqrt(0.06)*randn(1,500); %产生y轴方向噪声
x=cos(sita)+xnoise;%产生x轴方向观测信号
y=sin(sita)+ynoise;%产生y轴方向观测信号
%产生维纳滤波中x方向上观测信号的自相关矩阵
rxx=xcorr(x);
for i=1:100
for j=1:100
mrxx(i,j)=rxx(500-i+j);
end
end
xd=cos(sita);
%产生维纳滤波中x方向上观测信号与期望信号的互相关矩阵
rxd=xcorr(x,xd);
for i=1:100
mrxd(i)=rxd(499+i);
end
hoptx=inv(mrxx)*mrxd';%由维纳-霍夫方程得到的x方向上的滤波器最优解
fx=conv(x,hoptx); %滤波后x方向上的输出
nx=sum(abs(xd).^2);
eminx=nx-mrxd*hoptx; %x方向上最小均方误差
%产生维纳滤波中y方向上观测信号的自相关矩阵
ryy=xcorr(y);
for i=1:100
for j=1:100
mryy(i,j)=ryy(500-i+j);
end
end
yd=sin(sita);
%产生维纳滤波中y方向上观测信号与期望信号的互相关矩阵
ryd=xcorr(y,yd);
for i=1:100
mryd(i)=ryd(499+i);
end
hopty=inv(mryy)*mryd';%由维纳-霍夫方程得到的y方向上的滤波器最优解
fy=conv(y,hopty);%滤波后y方向上的输出
ny=sum(abs(yd).^2);
eminy=ny-mryd*hopty;%y方向上最小均方误差
subplot(2,4,1)
plot(x,xd);
title('x方向期望信号');
subplot(2,4,2)
plot(xnoise);
title('x方向噪声信号');
subplot(2,4,3)
plot(x);
title('x方向观测信号');
subplot(2,4,4)
n=0:500;
plot(n,eminx);
title('x方向最小均方误差');
subplot(2,4,5)
plot(yd);
title('y方向期望信号');
subplot(2,4,6)
plot(ynoise);
title('y方向噪声信号');
subplot(2,4,7)
plot(y);
title('y方向观测信号');
subplot(2,4,8)
plot(n,eminy);
title('‘y方向最小均方误差’');
figure;
plot(xd,yd,'k');
hold on;
plot(x,y,'b:');
hold on;
plot(fx,fy,'g-');
title('最终结果');