% 本实验中利用近似方法,即最佳FIR维纳滤波方法,在计算机上实现随机信号的维纳滤波。

% w(n)是零均值,方差为(1-a^2)的均匀分布白噪声

% s(n)为真实信号:s(n)=a*s(n-1)+w(n)

% v(n)是与s(n)互不相关的均匀分布白噪声,其均值为零,方差为1

% x(n)为接收到的添加了白噪声的信号:x = s + v

% si(n) 为使用理想维纳滤波器滤波得到结果

% y(n) 为使用近似FIR维纳滤波器滤波得到的结果

% If you have any problem, please email me:

qijiaxing@live.cn

% This program is written by QiJiaxing

% 2009.11.20

clc

clear all

L = 500;  % signal length

N = 20;  % length of the FIR

filter

a = 0.95;

% white noise with mean of 0 and var of (1-a^2)

w =  sqrt( 12 * (1 - a^2)) * ( rand(1,L) -

0.5 );

% true signal: s(n)=a*s(n-1)+w(n)

s = zeros(1,L); s(1) = w(1);

for ii = 2:L

s(ii) =

a * s(ii-1) + w(ii);

end

% white noise with mean of 0 and var of 1

v =  sqrt( 12 ) * ( rand(1,L) - 0.5 );

% received signal: x = s + v

x = s + v;

%  r_xx is the autocorrelation of x

r_xx = xcorr( x );

% R_xx is the N-dimentional autocorrelation matrix of x

R_xx = zeros( N );

for ii = 1 : N

R_xx( :

, ii ) = r_xx( L+1-ii : L+1-ii+N-1 )';

end

%  r_xs is the cross-correlation of x and

s

r_xs = xcorr( x , s );

r_xs = r_xs( L : L+N-1 )';

% according to R_xx * h_FIR = R_xs

% we can calculate the h_FIR

h_FIR = inv(R_xx) * r_xs;

h_FIR = h_FIR';

% y is the reslut signal filtered by h_FIR

y = cconv( h_FIR , x, L );

% si is the result signal filtered by ideal Wiener filter

h

n = 0:L-1;

h = 0.238 * ( 0.724 .^ n );

si  = cconv( h , x, L );

%% plot the true signal s(n) and the received signal x(n) of

the last 100

% points

t = L - 99 : L;

figure(1);

plot( t , x(t), '--b' , t , s(t) , 'r' );

legend( 'x(n)' , 's(n)' , 0 );

title('The true signal s(n) and the received signal

x(n)');

xlabel('n');ylabel('Signal Amplitude');

%% plot the ideal impulze response h(n) and the FIR impulze

response

% h_FIR(n) of N points

n = 1:N;

figure(2);

plot( n,h(n),'--b',n,h_FIR(n),'r' );

legend('The Ideal Wiener Filter h(n)','Approximate FIR Filter

h\_FIR(n)',0);

title('The Impulze Response of Ideal Wiener Filter h(n) and

the Impulze Response h\_FIR(n)');

xlabel('N points');ylabel('Amplitude');

%% plot the true signal s(n) and the result signal y(n)

filtered by

% h_FIR

figure(3);

plot( t, s(t), '--b', t, y(t), 'r' );

legend('True Signal s(n)','Result Signal y(n)',0);

title('The True Signal s(n) and The Result Signal y(n) Filter

by h\_FIR');

xlabel('n');ylabel('Signal Amplitude');

%% plot the true signal s(n) and the result signal si(n)

filtered by h

figure(4);

plot( t, s(t), '--b', t, si(t), 'r' );

legend('True Signal s(n)','Result Signal si(n)',0);

title('The True Signal s(n) and The Result Signal si(n)

Filtered by h');

xlabel('n');ylabel('Signal Amplitude');

如何用MATLAB编写FIR维纳滤波器,最佳FIR维纳滤波器实现相关推荐

  1. matlab radn,如何用matlab编写randn函数?

    MATLAB函数randn 功能:产生标准正态分布的随机数或矩阵的函数. 用法: Y = randn(n) 返回一个n*n的随机项的矩阵.如果n不是个数量,将返回错误信息. Y = randn(m,n ...

  2. matlab cat函数_如何用Matlab编写贪吃蛇游戏?(持续更新)

    今后我们实验室的研究重点将会聚焦在"基于游戏的测评"和"教育游戏化"这两个主题上,因此很有必要研究实现"爆款"游戏的一些基本的技术方法.这篇 ...

  3. 新冠插值法matlab_如何用MATLAB 编写interpl插值函数

    展开全部 yi = interp1(x,y,xi,method) 已知样本点坐标x,y,求xi处的函数值yi,插值方法是method. function [输出变量636f70793231313335 ...

  4. 如何用matlab编写混合整数规划,MATLAB中的混合整数线性规划

    我试图用MATLAB解决这个混合整数线性规划问题 . 但是,我在matlab中对线性目标函数和决策变量求和的定义存在问题 . 我在MATLAB中使用intlinprog函数 . 请在下面找到图片链接 ...

  5. 如何用matlab编写分段函数_请教各位怎样用matlab定义一个分段函数MATLAB分段函数...

    请教各位怎样用matlab定义一个分段函数 MATLAB分段函数 www.zhiqu.org     时间: 2020-12-08 matlab提供了了两种定义分段函数的方法: 常规方法:使用if.. ...

  6. 噪声调频 matlab,如何用matlab编写噪声调频干扰信号

    2013-11-01 qsort函数怎么编? qsort,包含在stdlib.h头文件里,函数一共四个参数,没返回值.一个典型的qsort的写法如下qsort(s,n,sizeof(s[0]),cmp ...

  7. 如何用matlab编写分段函数_matlab 如何写分段函数

    展开全部 ^ 这是我前面帮一个32313133353236313431303231363533e4b893e5b19e31333262383662人写的分段函数,并绘图,你可以参考一下 X=[];Y= ...

  8. matlab里面sin函数是角度,matlab-如何用matlab编写sin函数要求定义一 – 手机爱问

    2019-03-11 函数是什么? 三.函数的定义 定义 设 与 是某一过程中的两个变量,如果当变量 在变化范围 中任取一个数值时,变量 按照一定的对应规则,总有确定的数值和它相对应,则称变量 为变量 ...

  9. matlab 信号去直流,基于FIR滤波的ADC采样信号中直流信号的消除方法与流程

    本发明属于卫星导航领域,介绍了ADC采样信号中的直流偏置消除方法. 背景技术: 卫星导航系统在军事和民用领域应用越来越广泛.以GPS卫星导航系统为例,其到地面的信号功率仅为-130dBm,这么微弱的信 ...

  10. 在matlab中实现累乘,如何利用matlab设计一个线性相位FIR带通滤波器,并在FPGA上实现...

    设计要求 利用matlab设计一个线性相位FIR带通滤波器,并在FPGA上实现. 1.滤波器指标:过渡带带宽分别为100~300HZ,500~700HZ,阻带允许误差为0.02,通带允许误差为0.01 ...

最新文章

  1. 错误3 error C3859: 超过了 PCH 的虚拟内存范围;请使用“-Zm120”
  2. JTAG与STC,DEBUGWIRE区别
  3. php 数据库查询乱码,怎么解决php数据库查询乱码问题
  4. 电阻应用电路之指示灯电路的设计
  5. Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解
  6. 【python】时间处理函数以及文件操作
  7. 2013年7月底至8月初51Aspx源码发布详情
  8. matlab 有约束最小化,求解带等式约束和最小化目标的LMI
  9. erfc怎么用计算机计算,erfc(erfc函数如何计算)
  10. 网络工程师考试常用计算公式汇总
  11. 自适应函数符和函数适配器(Adaptable Functors and Function Adapters)
  12. 网络爬虫(基于python的网络爬虫批量爬取图片)
  13. 如何在React.js文件中设置标签的背景图片
  14. 集群调度LSF-学习笔记
  15. SAP License:SAP反记帐和红字冲销
  16. Win10系统重置后键盘鼠标都失灵,光标都不显示怎么解决?
  17. 台式计算机无线接入,台式电脑可以无线连接wifi吗
  18. 进军互联网该如何选择html模板?
  19. MySQL高级:索引优化之防止索引失效
  20. python中的进度条tqdm模块, 让进度可视

热门文章

  1. 闪耀超颖光栅的建模与设计
  2. 工业软件深度:中国PLM/MES/SCADA/DCS格局与主要玩家分析~
  3. STM32通过SIM800L向yeelink端上传数据
  4. catia中的螺旋伞齿轮画法_CATIA齿轮绘制方法
  5. maven使用国内源和使用代理
  6. 百旺信云计算机中心,百旺信云数据中心机房介绍
  7. python3.7版本简介_Python实例100个(基于最新Python3.7版本)
  8. 水电图纸——安装配电箱,插座——3.8
  9. 嵌入式linux 学习笔记--如何使用udhcpc获取动态IP
  10. 你被选中了——晚会上的随机点名