如何用MATLAB编写FIR维纳滤波器,最佳FIR维纳滤波器实现
% 本实验中利用近似方法,即最佳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维纳滤波器实现相关推荐
- matlab radn,如何用matlab编写randn函数?
MATLAB函数randn 功能:产生标准正态分布的随机数或矩阵的函数. 用法: Y = randn(n) 返回一个n*n的随机项的矩阵.如果n不是个数量,将返回错误信息. Y = randn(m,n ...
- matlab cat函数_如何用Matlab编写贪吃蛇游戏?(持续更新)
今后我们实验室的研究重点将会聚焦在"基于游戏的测评"和"教育游戏化"这两个主题上,因此很有必要研究实现"爆款"游戏的一些基本的技术方法.这篇 ...
- 新冠插值法matlab_如何用MATLAB 编写interpl插值函数
展开全部 yi = interp1(x,y,xi,method) 已知样本点坐标x,y,求xi处的函数值yi,插值方法是method. function [输出变量636f70793231313335 ...
- 如何用matlab编写混合整数规划,MATLAB中的混合整数线性规划
我试图用MATLAB解决这个混合整数线性规划问题 . 但是,我在matlab中对线性目标函数和决策变量求和的定义存在问题 . 我在MATLAB中使用intlinprog函数 . 请在下面找到图片链接 ...
- 如何用matlab编写分段函数_请教各位怎样用matlab定义一个分段函数MATLAB分段函数...
请教各位怎样用matlab定义一个分段函数 MATLAB分段函数 www.zhiqu.org 时间: 2020-12-08 matlab提供了了两种定义分段函数的方法: 常规方法:使用if.. ...
- 噪声调频 matlab,如何用matlab编写噪声调频干扰信号
2013-11-01 qsort函数怎么编? qsort,包含在stdlib.h头文件里,函数一共四个参数,没返回值.一个典型的qsort的写法如下qsort(s,n,sizeof(s[0]),cmp ...
- 如何用matlab编写分段函数_matlab 如何写分段函数
展开全部 ^ 这是我前面帮一个32313133353236313431303231363533e4b893e5b19e31333262383662人写的分段函数,并绘图,你可以参考一下 X=[];Y= ...
- matlab里面sin函数是角度,matlab-如何用matlab编写sin函数要求定义一 – 手机爱问
2019-03-11 函数是什么? 三.函数的定义 定义 设 与 是某一过程中的两个变量,如果当变量 在变化范围 中任取一个数值时,变量 按照一定的对应规则,总有确定的数值和它相对应,则称变量 为变量 ...
- matlab 信号去直流,基于FIR滤波的ADC采样信号中直流信号的消除方法与流程
本发明属于卫星导航领域,介绍了ADC采样信号中的直流偏置消除方法. 背景技术: 卫星导航系统在军事和民用领域应用越来越广泛.以GPS卫星导航系统为例,其到地面的信号功率仅为-130dBm,这么微弱的信 ...
- 在matlab中实现累乘,如何利用matlab设计一个线性相位FIR带通滤波器,并在FPGA上实现...
设计要求 利用matlab设计一个线性相位FIR带通滤波器,并在FPGA上实现. 1.滤波器指标:过渡带带宽分别为100~300HZ,500~700HZ,阻带允许误差为0.02,通带允许误差为0.01 ...
最新文章
- 错误3 error C3859: 超过了 PCH 的虚拟内存范围;请使用“-Zm120”
- JTAG与STC,DEBUGWIRE区别
- php 数据库查询乱码,怎么解决php数据库查询乱码问题
- 电阻应用电路之指示灯电路的设计
- Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解
- 【python】时间处理函数以及文件操作
- 2013年7月底至8月初51Aspx源码发布详情
- matlab 有约束最小化,求解带等式约束和最小化目标的LMI
- erfc怎么用计算机计算,erfc(erfc函数如何计算)
- 网络工程师考试常用计算公式汇总
- 自适应函数符和函数适配器(Adaptable Functors and Function Adapters)
- 网络爬虫(基于python的网络爬虫批量爬取图片)
- 如何在React.js文件中设置标签的背景图片
- 集群调度LSF-学习笔记
- SAP License:SAP反记帐和红字冲销
- Win10系统重置后键盘鼠标都失灵,光标都不显示怎么解决?
- 台式计算机无线接入,台式电脑可以无线连接wifi吗
- 进军互联网该如何选择html模板?
- MySQL高级:索引优化之防止索引失效
- python中的进度条tqdm模块, 让进度可视
热门文章
- 闪耀超颖光栅的建模与设计
- 工业软件深度:中国PLM/MES/SCADA/DCS格局与主要玩家分析~
- STM32通过SIM800L向yeelink端上传数据
- catia中的螺旋伞齿轮画法_CATIA齿轮绘制方法
- maven使用国内源和使用代理
- 百旺信云计算机中心,百旺信云数据中心机房介绍
- python3.7版本简介_Python实例100个(基于最新Python3.7版本)
- 水电图纸——安装配电箱,插座——3.8
- 嵌入式linux 学习笔记--如何使用udhcpc获取动态IP
- 你被选中了——晚会上的随机点名