clear all M=9; N=100; k=0:N-1; zs=randn(1,N); s=10*sin(0.02*pi*k); x=s+zs; b=ones(1,M)/M; a=1; y=filter(b,a,x); subplot(2,1,1) plot(k,x) xlabel('(a)受噪声干扰的输入信号'); subplot(2,1,2) plot(k,y) xlabel('(b)滤除噪声干扰的输出信号'); hold on plot(k,s,'r') legend('y(k)','s(k)'); axis([0 100 -12 12]);
时间: 2024-04-02 08:37:13 浏览: 15
这段代码使用MATLAB实现了M=9点滑动平均滤波,对受噪声干扰的正弦信号进行滤波,去除噪声干扰后输出信号。以下是代码解释:
1. `clear all`:清空MATLAB工作区。
2. `M=9; N=100; k=0:N-1;`:定义滑动窗口大小M=9,信号长度N=100,生成信号序列的下标k。
3. `zs=randn(1,N);`:生成均值为0、方差为1的高斯分布随机噪声信号。
4. `s=10*sin(0.02*pi*k);`:生成正弦信号。
5. `x=s+zs;`:将正弦信号和噪声信号叠加得到受噪声干扰的输入信号。
6. `b=ones(1,M)/M; a=1; y=filter(b,a,x);`:定义滤波器的传递函数为b/a,其中b为9个1的向量除以9,即得到了平均值,a为1,使用filter函数对输入信号进行滤波,得到输出信号y。
7. `subplot(2,1,1) plot(k,x) xlabel('(a)受噪声干扰的输入信号');`:绘制受噪声干扰的输入信号。
8. `subplot(2,1,2) plot(k,y) xlabel('(b)滤除噪声干扰的输出信号');`:绘制滤除噪声干扰的输出信号。
9. `hold on plot(k,s,'r')`:在输出信号图像上绘制原始正弦信号。
10. `legend('y(k)','s(k)');`:添加图例。
11. `axis([0 100 -12 12]);`:设置坐标轴范围。
运行此代码,可以看到原始信号、受噪声干扰的输入信号、滤除噪声干扰的输出信号三个图像,其中红色线段为原始正弦信号。可以看到,滤波后的输出信号已经去除了噪声干扰,基本还原了原始正弦信号。