L = input('输入信号样本个数L=');

N = input('输入FIR滤波器阶数N=');

a = 0.95;

K = 50;

sigma_a2 = 1-a^2;

a_ = [1,-a];

while(1)

w = sqrt(sigma_a2)*(randn(L,1));         %获得方差为sigma_a2的高斯白噪声w

v = randn(L,1);                          %获得方差为1的高斯白噪声v

s(1) = w(1);                             %通过公式:s(n) = a*s(n-1)+wn(n)获得源信号s与加了噪声v的x

for i=1:L-1

s(i+1)=a*s(i)+w(i+1);

x(i) = s(i)+v(i);

end

x(L) = s(L)+v(L);

%%%%%%%%%%%%%%%%%估计相关函数r_xx和r_xs%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for i=1:K+1

rxx(i)=sum(x(i:L).*x(1:L-i+1))/(L-i+1);

end

r_xx_g=[rxx(K+1:-1:2),rxx(1:K+1)];

for i=1:K+1

rxs(i)=sum(x(i:L).*s(1:L-i+1))/(L-i+1);

end

r_xs_g=[rxs(K+1:-1:2),rxs(1:K+1)];

%%%%%%%%%%%%%%检验x的r_xx和r_xs是否与理论值相符%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

r_xx_t = a.^abs([-K:K]);

r_xx_t(K+1) = r_xx_t(K+1)+1;

r_xs_t = a.^abs([-K:K]);

rou_xx=(sum((r_xx_g-r_xx_t).^2))/sum(r_xx_t.^2);

rou_xs=(sum(r_xs_g-r_xs_t).^2)/sum(r_xs_t.^2);

if rou_xx<0.03 & rou_xs<0.01

break;

end

end

%%%%%%%%%%%%%%x(n)的自相关函数的理论值(红色)和实际值(蓝色)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure(1);

stem(r_xx_t,'r');

hold on

stem(r_xx_g,'*','b');

title('x(n)的自相关函数的理论值和实际值(*)');

%%%%%%%%%%%%%%最后100个s(n)(红色)和x(n)(蓝色)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure(2);

stem(s(L-100:L),'r');

hold on

stem(x(L-100:L),'*','b');

title('最后100个s(n)和x(n)(*)');

%%%%%%%%%%%%%%N个理想h(n)(h_t红色)估计h(n)(h_g蓝色)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

n = 0:N-1;

h_t = 0.238*(0.724).^n;                         %求得理想的h(n)

for i=1:N

xx(i)=sum(x(i:L).*x(1:L-i+1))/(L-i+1);

end

for i=1:N

Rxx(i,1:N)=[xx(i:-1:1),xx(2:N+1-i)];

end

for i=1:N

xs(i)=sum(x(i:L).*s(1:L-i+1))/(L-i+1);

end

invRxx=inv(Rxx);

h_g=invRxx*xs';                                  %估计h

figure(3);

stem(h_t,'r');

hold on

stem(h_g,'*','b');

title('N个理想h(n)(h_t)估计h(n)(*h_g)');

%%%%%%%%%%%%%%最后100个s(n)(红色)理想维纳滤波S_l(n)(蓝色)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

y_l(1) = s(1);                                     %得到理想维纳滤波的S(n)

for i = 1:L-1

y_l(i+1) = 0.724*s(i)+0.238*x(i+1);

end

figure(4);

stem(s(L-100:L),'r');

hold on

stem(y_l(L-100:L),'*','b');

title('最后100个s(n)理想维纳滤波S_R(n)(*)');

%%%%%%%%%%%%%%最后100个s(n)(红色)根据式FIR滤波S_R(n)(蓝色)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for i=1:9                                         %得到FIR维纳滤波的S(n)

y_F(i)=sum(h_g(1:i)'.*x(i:-1:1));

end

for i=10:L

y_F(i)=sum(h_g'.*x(i:-1:i-9));

end

figure(5);

stem(s(L-100:L),'r');

hold on

stem(y_F(L-100:L),'*','b');

title('最后100个s(n)根据式FIR滤波S_R(n)(*)');

%%%%%%%%%%%%%%%%%求均方误差%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

e_x=sum((x-s(1:L)).^2)/L                        %求各自的均方误差

e_i=sum((y_l-s(1:L)).^2)/L

e_f=sum((y_F-s(1:L)).^2)/L

matlab实习维纳滤波,自编Matlab程序,维纳滤波器的Matlab实现相关推荐

  1. matlab软件及基础实验第8单元,《MATLAB统计分析与应用:40个案例分析》程序与数据(内含彩蛋)...

    [实例简介]Matlab教材及随书光盘,超实用的好书,强烈推荐! MATLAB统计分析与应用 40个案例分析.pdf <MATLAB统计分析与应用:40个案例分析>程序与数据.rar 第1 ...

  2. matlab实践总结与体会,MatLab实习心得体会

    MatLab实习心得体会 我从中国石油大学(北京)来到大庆油田勘探开发研究院实习,刚刚来到这里时我内心充满了激动和喜悦,对这个有着辉煌成绩的科研单位充满了期待.到了这里没多久我就参加培训中心组织的入院 ...

  3. matlab收获,matlab实习心得体会 1700字

    精品文档2016全新精品资料全新公文范文全程指导写作–独家原创1/4MATLAB实习心得体会1700字MATLAB实习心得体会我从中国石油大学(北京)来到大庆油田勘探开发研究院实习,刚刚来到这里时我内 ...

  4. matlab实习,matlab实习报告

    MATLAB实习报告(1) 实验一 MATLAB运算基础 王夏 2011301610405 一.实验目的 1.熟悉启动和退出MATLAB的方法. 2.熟悉MATLAB命令窗口的组成. 3.掌握建立矩阵 ...

  5. matlab实习,matlab上实习指导书.doc

    matlab上实习指导书 Matlab上机实习指导书 目 录 SIMULINK的库模块----------------------------------30 附录3 转义符号------------ ...

  6. matlab计算原点矩,关于用matlab求样本均值方差以及k阶原点矩的matlab程序

    关于用matlab求样本均值方差以及k阶原点矩的matlab 程序 关于用matlab求样本均值和方差以及matlab程 序 1n1. 样本均值,公式xX,(其中X为样本).程序如下: ,i,1in ...

  7. c 传图片数据给matlab,c++ - 如何通过UDP将数据从C ++应用程序发送到Matlab并进行绘制 - 堆栈内存溢出...

    我想使用Winsock通过UDP将数据从我的C ++应用程序发送到Matlab,并实时绘制数字. 例如:我得到了从1到10的数字,我想从C ++发送1,在Matlab中接收它,将其放在图形上(图,条等 ...

  8. matlab中if语句多个_科学计算 | MATLAB程序设计基础

    点击"蓝字"关注我们 科学计算 | MATLAB程序设计基础 引言 在前面的学习中,我们都是在命令行窗口逐条输入命令,然后由matlab解释执行,这种交互式的命令执行方式,操作简单 ...

  9. 网络matlab程序_【Matlab】官网资源盘点

    相关链接: 一个单身男博士的业余生活:技多不压身,解数独也可撩妹 手把手 | 使用 MATLAB 图像处理与深度学习解算数独 基于Matlab的杨氏双缝干涉实验模拟 基于Matlab的二维正方晶体马德 ...

  10. matlab的exec程序,C++调用Matlab画图的一段程序

    劳动节闲来无事,写了一天程序,just for fun. 看,这是C++调用Matlab画图的一段程序.暂时不想多解释了,有兴趣的话,看看下面的代码吧. 以下几段代码由上到下,越来越旧.最上面的是最新 ...

最新文章

  1. pandas中的基本功能
  2. 二分图匹配的匈牙利算法
  3. 你玩的音游可能真是AI生成的,Love Live!工作室发了篇论文,用AI节省50%作谱时间...
  4. UbuntuでPostgreSQLをインストールからリモートアクセスまでの手順
  5. Git 技术篇 - GitHub克隆私有仓库方法,新主机绑定并同步github私有库实例演示
  6. java的4种代码块
  7. 端口号被占用时,查找占用该端口号的进程并释放端口号
  8. JavaEE班第四天
  9. 性能测试——接口、协议篇
  10. linux安装pl脚本,nagios插件脚本check_linux_stats.pl 安装
  11. HIVE Sql 笛卡尔积关联导致查询过慢问题优化
  12. EasyCHM:本程序可能被病毒或者人为修改!的解决方案
  13. linux目录更改权限不够,Linux中文件夹访问权限不足
  14. 什么是反馈电路?反馈有什么作用?
  15. android 设置文本加粗,如何在Android中将文本更改为粗体?
  16. mysql杀掉sql语句,Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
  17. 8月20日 仿163邮箱中遇到的问题及解决(二)
  18. 16 个动态图:一款好用到爆的 Python 可视化利器
  19. c# Windows窗体应用程序设计(三)
  20. ibm服务器维护重点,IBM服务器存储维护基础知识.pptx

热门文章

  1. 阿里矢量图可根据样式修改颜色
  2. [AHK]二维数组总结
  3. 基于支付场景下的微服务改造与性能优化
  4. junit5教程_JUnit5教程
  5. 深度学习面试题2018
  6. linux 计算cpu利用率
  7. Origin2021学习版申请与安装
  8. 直方图与直方图均衡化
  9. matlab 对直方图均衡化,基于直方图均衡化的图像增强技术分析与Matlab实现_直方图均衡化matlab...
  10. 【DT调研】关于BIM + GIS的相关知识了解