tag 标签: 自适应

相关博文
  • 2013-5-31 10:43
    795 次阅读|
    0 个评论
              最近在学习进行自适应FIR滤波器的设计,下面是参考别人的设计“基于LMS算法的自适应噪声抵消器”,稍作修改之后得到的。阶数n=8;算法步长u=0.0078;输入输出信号均为16位;滤波器最高32位。主要系统输入:环境噪声信号data_in(用高斯信号来模拟)、经过噪声叠加的正弦信号desired_in(线性叠加)、步长step_size;系统输出:经过滤波的正弦信号error_out、误差e_out、拟合抽头系数w_out。其中关于定标、截位、步长的取值等方面有些疑问,希望大家能提些宝贵意见。         自适应滤波的原理框图:           该设计的系统框图:         测试框架:           ModelSim中的仿真波形:         经测试,除了μ=2^-7(即0.0078),滤波收敛效果较好的μ的取值范围:μ∈ 。        在实际设计中定标、截位和步长的取值很关键,在本次设计中,步长取μ=2^-7(即0.0078),定标采用Q4.11。在代码中,step_size = 16'h0010,由于采用Q4.11 ,因而u=0.0078。在LMS算法的抽头系数更新模块中,    assign product_32 = data_in * step_size;    assign product_16 = product_32 ;    assign weight_in = (reset == 1'b1) ? 16'h0000 : (product_16 + weight_out); 关于系数每次更新累加,都截取噪声输入data_in与步长输入step_size相乘后32位乘积结果的 位。在LMS滤波器的顶层模块,    assign product_32 = step_size * error_in;    assign product_16 = product_32 ; 也都截取32位乘积结果的 位。           问题: 1. 截位为什么截取32位乘积结果的 位?是跟步长定标采用Q4.11有关吗?截位标准是什么样的?如果8抽头换成17抽头,16位输入数据换成13位输入数据呢? 2. 定标是根据什么定的,怎么快速有效地定标? 3. 关于步长的取值,大了小了收敛效果都不好,除了一个个地试,有什么方法可以快速有效地给步长取值?查了资料,收敛条件为:0μ1/λmax,λmax是输入数据的自相关矩阵的最大特征值。具体地,在此次设计中,λmax该如何求?         希望能跟大家交流,希望大家做过自适应FIR滤波器的,能帮帮忙,给些宝贵意见,谢谢!                  模块实现代码:   module lms(clk,reset,enable,data_in,desired_in,sine_display,step_size,error_out,e_out,w_out); input  clk,reset,enable; input   signed  data_in,desired_in,step_size,sine_display; output  signed  error_out,e_out; output  signed w_out;   wire  signed error_in,data_in_reg,                   desired_in_reg,product_16; wire signed product_32,LMSx8_sum_out; wire signed LMSx8_link_out;   delayUnit data_reg_1 ( .clk(clk), .reset(reset), .enable(enable), .data_in(data_in), .delay_out(data_in_reg) ); delayUnit data_reg_2 ( .clk(clk), .reset(reset), .enable(enable), .data_in(desired_in), .delay_out(desired_in_reg) );    assign product_32 = step_size * error_in;    assign product_16 = product_32 ; LMSx8 LMSx8   ( .clk(clk), .reset(reset), .enable(enable), .data_in(data_in_reg), .step_size(product_16), .Sum_in(32'h0000_0000), .Sum_out(LMSx8_sum_out), .link_out(LMSx8_link_out) );    assign error_in = desired_in_reg - LMSx8_sum_out ;  assign e_out = sine_display - error_out; assign w_out = LMSx8_link_out; delayUnit data_reg_3 ( .clk(clk), .reset(reset), .enable(enable), .data_in(error_in), .delay_out(error_out) ); endmodule /////////////////////////////////////////////////////////////////////////////////////////////////////// module LMSx8(clk,reset,enable,data_in,step_size,Sum_in,Sum_out,link_out); input clk,reset,enable; input  signed data_in,step_size; input   signed Sum_in; output  signed Sum_out; output  signed link_out; wire  signed LMS_tap_1_delay_out, LMS_tap_2_delay_out, LMS_tap_3_delay_out, LMS_tap_4_delay_out,                      LMS_tap_5_delay_out, LMS_tap_6_delay_out, LMS_tap_7_delay_out, LMS_tap_8_delay_out; wire  signed LMS_tap_1_weight_out, LMS_tap_2_weight_out, LMS_tap_3_weight_out, LMS_tap_4_weight_out, LMS_tap_5_weight_out, LMS_tap_6_weight_out, LMS_tap_7_weight_out, LMS_tap_8_weight_out;    wire signed LMS_tap_1_out, LMS_tap_2_out, LMS_tap_3_out, LMS_tap_4_out, LMS_tap_5_out, LMS_tap_6_out, LMS_tap_7_out, LMS_tap_8_out;   LMS_tap LMS_tap_1 ( .clk(clk), .reset(reset), .enable(enable), .data_in(data_in),  .step_size(step_size), .delay_out(LMS_tap_1_delay_out), .weight_out(LMS_tap_1_weight_out), .tap_out(LMS_tap_1_out) ); LMS_tap LMS_tap_2 ( .clk(clk), .reset(reset), .enable(enable), .data_in(LMS_tap_1_delay_out),  .step_size(step_size), .delay_out(LMS_tap_2_delay_out), .weight_out(LMS_tap_2_weight_out), .tap_out(LMS_tap_2_out) ); LMS_tap LMS_tap_3 ( .clk(clk), .reset(reset), .enable(enable), .data_in(LMS_tap_2_delay_out),  .step_size(step_size), .delay_out(LMS_tap_3_delay_out), .weight_out(LMS_tap_3_weight_out), .tap_out(LMS_tap_3_out) ); LMS_tap LMS_tap_4 ( .clk(clk), .reset(reset), .enable(enable), .data_in(LMS_tap_3_delay_out),  .step_size(step_size), .delay_out(LMS_tap_4_delay_out), .weight_out(LMS_tap_4_weight_out), .tap_out(LMS_tap_4_out) ); LMS_tap LMS_tap_5 ( .clk(clk), .reset(reset), .enable(enable), .data_in(LMS_tap_4_delay_out),  .step_size(step_size), .delay_out(LMS_tap_5_delay_out), .weight_out(LMS_tap_5_weight_out), .tap_out(LMS_tap_5_out) ); LMS_tap LMS_tap_6 ( .clk(clk), .reset(reset), .enable(enable), .data_in(LMS_tap_5_delay_out),  .step_size(step_size), .delay_out(LMS_tap_6_delay_out), .weight_out(LMS_tap_6_weight_out), .tap_out(LMS_tap_6_out) ); LMS_tap LMS_tap_7 ( .clk(clk), .reset(reset), .enable(enable), .data_in(LMS_tap_6_delay_out),  .step_size(step_size), .delay_out(LMS_tap_7_delay_out), .weight_out(LMS_tap_7_weight_out), .tap_out(LMS_tap_7_out) ); LMS_tap LMS_tap_8 ( .clk(clk), .reset(reset), .enable(enable), .data_in(LMS_tap_7_delay_out),  .step_size(step_size), .delay_out(LMS_tap_8_delay_out), .weight_out(LMS_tap_8_weight_out), .tap_out(LMS_tap_8_out) ); assign Sum_out = Sum_in + LMS_tap_1_out + LMS_tap_2_out +         LMS_tap_3_out + LMS_tap_4_out + LMS_tap_5_out +         LMS_tap_6_out + LMS_tap_7_out + LMS_tap_8_out;   assign link_out = LMS_tap_1_weight_out; assign link_out  = LMS_tap_2_weight_out; assign link_out   = LMS_tap_3_weight_out;  assign link_out   = LMS_tap_4_weight_out; assign link_out   = LMS_tap_5_weight_out; assign link_out   = LMS_tap_6_weight_out;  assign link_out   = LMS_tap_7_weight_out; assign link_out    = LMS_tap_8_weight_out;   endmodule /////////////////////////////////////////////////////////////////////////////////////////////////////////// module LMS_tap(clk,reset,enable,data_in,step_size,delay_out,weight_out,tap_out); input clk,reset,enable; input  signed data_in,step_size; output  signed delay_out; output  signed weight_out; output  signed tap_out; wire signed weight_in,product_16;    wire signed product_32;   delayUnit delay_reg ( .clk(clk), .reset(reset), .enable(enable), .data_in(data_in), .delay_out(delay_out) );    assign product_32 = data_in * step_size;    assign product_16 = product_32 ;    assign weight_in = (reset == 1'b1) ? 16'h0000 : (product_16 + weight_out);   delayUnit data_reg  ( .clk(clk), .reset(reset), .enable(enable), .data_in(weight_in), .delay_out(weight_out) ); assign tap_out = weight_out * data_in; endmodule /////////////////////////////////////////////////////////////////////////////////////////////////////////// module delayUnit(clk,reset,enable,data_in,delay_out); input clk,reset,enable; input data_in; output delay_out; reg delay_out;   always @(posedge clk or posedge reset)  begin if (reset ==1'b1)  begin delay_out = 0; end else  begin if (enable == 1'b1)  begin delay_out = data_in; end end end endmodule ///////////////////////////////////////////////////////////////////////////////////////////////////////////          测试代码: `timescale 1 ns / 1 ns  //need to run 10 us module lms_tb(); reg  clk,enable,reset; reg   data_in,desired_in,step_size,sine_display; reg   sine ,noise ; wire error_out; integer i; parameter CYCLE = 10;   lms TestUnit   (.clk(clk), .data_in(data_in), .desired_in(desired_in), .enable(enable), .reset(reset), .step_size(step_size), .error_out(error_out) ); always #(CYCLE/2) clk = ~clk; initial begin clk = 1'b0; reset = 1'b0; enable = 1'b1; #(CYCLE) reset = 1'b1; #(CYCLE) reset = 1'b0; end initial begin step_size = 16'h0010; //Q4.11 so u=0.0078 $readmemh("sine.hex",sine); $readmemh("noise.hex",noise); for(i=0;i1000;i=i+1) begin #(CYCLE) data_in = noise ;  sine_display = sine ;  desired_in = sine +noise ; end end endmodule    
相关资源
  • 所需E币: 5
    时间: 2020-6-23 22:23
    大小: 509.37KB
    上传者: Goodluck2020
    IGBT自适应平衡控制系统设计,IGBT串联平衡稳压系统设计.pdf
  • 所需E币: 4
    时间: 2020-6-19 23:52
    大小: 612.17KB
    上传者: Goodluck2020
    使用MEMS加速度计和自适应参考(基准)准确捕捉车载DVR系统中的真实加速度数据.pdf
  • 所需E币: 5
    时间: 2020-6-13 12:22
    大小: 507.66KB
    上传者: samewell
    自适应巡线板.rarPIC
  • 所需E币: 1
    时间: 2020-6-11 21:07
    大小: 4.78MB
    上传者: 指的是在下
    人体快转向运动自适应卡尔曼跟踪算法
  • 所需E币: 4
    时间: 2019-12-26 01:27
    大小: 110.45KB
    上传者: 2iot
    在简单介绍算术编码和自适应算术编码的基础上,介绍了利用FPGA器件并通过VHDL语言描述实现自适应算术编码的过程。整个编码系统在LTERA公司的MAX+plusⅡ软件上进行了编译仿真,测试结果表明:编码器各个模块的设计在速度和资源利用两方面均达到了较优的状态,可以满足实时编码的要求。……
  • 所需E币: 5
    时间: 2019-12-28 21:44
    大小: 156.76KB
    上传者: 16245458_qq.com
    描述了4G环境下支持移动多媒体应用的中间件(4G中间件)的需求、基于开放标准OSGi技术的4G中间件体系结构;阐述了4G中间件提供的主要服务.支持4G自适应萋娱体应用昀稆动服务巾间件开发’范宝德啦,武强1,刘江霞1一,朱华’(1.中国矿业大学(北京),北京100083;2,烟台大学,山东3.枣庄日报社,山东枣庄277102)摘要:描述了4G环境下支持移动多媒体应用的中间件(4G中间件)的需求、基于开放标准0sGi技术的4G中间件体系结构;阐述了4G中间件提供的主要服务。关键词:移动多媒体应用中间件0SGi上下文感知Developmentofamobilesenricemiddlewaresupporting4Gad印tiVemultimediaapplicationsFANB∞Del”.wuQi肌gl,uuJi粕铲iaI.2,zHuHu一(1.chinaUnive墙ity0fMining蚰dn曲∞logy(Be……
  • 所需E币: 3
    时间: 2019-12-28 21:50
    大小: 58.5KB
    上传者: quw431979_163.com
    电子初学者须知……
  • 所需E币: 4
    时间: 2019-12-30 10:24
    大小: 26KB
    上传者: wsu_w_hotmail.com
    这里介绍的可调稳压电源可以实现从1.25V~30V连续可调,输出电流可到4A左右。……
  • 所需E币: 5
    时间: 2019-12-30 10:26
    大小: 131.4KB
    上传者: wsu_w_hotmail.com
    详细介绍了一种新颖的PWM逆变电源的数字控制方法——自适应重复控制。……
  • 所需E币: 4
    时间: 2019-12-25 15:44
    大小: 220.79KB
    上传者: rdg1993
    一种基于嵌入式Linux和S3C2410平台设计的远程视频自适应传输系统,该系统对视频的编码压缩和传输作了改进设计.通过对改进设计的模拟实验,证明了改进的设计能够在网络可用带宽不稳定的情况下保持视频接收端缓存数据的持续高占有率,有效地减少了视频播放的抖动.基于SCTP的嵌兀式远程顽频自适应传输系统高群凯,黄仁(重庆大学计算机学院,重庆400030)摘要:一种基于嵌入式LiⅡII】【和S3C2410平台设计的远程视频自适应传输系统,该系统对视频的编码压缩和传输作了改进设计。通过对改进设计的模拟实验,证明了改进的设计能够在网络可用带宽不稳定的倚况下保持视频接收端缓存数据的持续高占有率.有效地减少了视频播放的抖动。关键词:scTP嵌入式“nⅡ视频采集自适应NS2ASCTP―basedembedded阳moteVideoad印tivetraIlsmissionsystemGAOQunKai。HuANGR印(C0uege0fc0“lPut盯science,……
  • 所需E币: 5
    时间: 2020-1-2 02:13
    大小: 354.22KB
    上传者: 二不过三
    实验利用数字全息干涉技术对电极反应过程中溶液浓度变化分布进行测量.运用基于直方图的自适应滤波方法和基于形态学滤波的固液界面提取方法,解决了每更换一次实验数据都要人工识别和更换滤波参数以及手动去除固侧干扰信息的难题,为实现从摄像机实时读取数据、实时处理、测量和观察提供了仿真依据.基于干涉原理测量溶液浓度变化分布的实时系统仿真实现术张璇1,吴晓娟1,陈慎豪2,袁博宇1(1.山东大学信息科学与工程学院,山东济南250100;2.山东大学化学与化工学院,山东济南250100)摘要:实验利用数字全息干涉技术对电极反应过程中溶液浓度变化分布进行测量。运用基于直方图的自适应滤波方法和基于形态学滤波的固液界面提取方法,解决了每更换一次实验数据都要人工识别和更换滤波参数以及手动去除固侧干扰信息的难题,为实现从摄像机实时读取数据、实时处理、测量和观察提供了仿真依据。关键词:数字全息;干涉测量;直方图;形态学滤波Simulationofthereal-timemeasuringsystemofsolutionconcentration……
  • 所需E币: 5
    时间: 2020-1-3 18:21
    大小: 304.59KB
    上传者: 238112554_qq
    提出了一种新的文字图像信息隐藏算法.充分利用人眼视觉特性,结合载体的局部特征,自适应地隐藏秘密信息,使算法具有很好的透明性.对秘密信息进行离散化、幻方置乱、位扩展及混沌调制等预处理,使算法具有较好的鲁棒性和安全性.实验结果表明,对于常见的图像攻击,特别是对图像的剪切攻击和JPEG压缩具有很强的鲁棒性.……
  • 所需E币: 5
    时间: 2020-1-3 18:26
    大小: 250.83KB
    上传者: 16245458_qq.com
    提出了一种基于预测的自适应六边形搜索方法,并将此算法与其他常用的快速运动估计算法进行实验比较.实验结果表明:该算法有效地降低了搜索点数,搜索精度比较接近于FS算法,在一定程度上提高了搜索的效率.图像与多媒体技术9№ge№essIngand删me曲Tec№Iogy一种改进的快速搜索算法周红军1.一,吴明芳1(1.重庆科技学院,重庆400050;2.重庆大学重庆400044)摘要:提出了一种基于预测的自适应六边形搜索方法,并将此算法与其他常用的快速运动估计算法进行实验比较。实验结果表明:该算法有效地降低了搜索点数,搜索精度比较接近于聆算法,在一定程度上提高了搜索的效率。关键词:视频压缩运动估计快速搜索当今时代,信息技术和计算机互联网飞速发展。为括5个点,形成一个较小规模的钻石形。适应技术发展和应用的要求,各种多媒体数据压缩编码DS算法的搜索思想是先用LDSP搜索,由于步长技术也在不断发展中,其中视频压缩技术一直是人们研大、搜索范围广,可以实现粗定位,使搜索不会陷于局部讨的热点。最小。当粗定位结束时,可以认为最优点就在LDSP周视频图像处理实时性要求高,而且视频图像数据量围8个点所围的菱形区域中。然后用SDSP实现最佳匹庞大,因此必须对它进行压缩。同时……
  • 所需E币: 4
    时间: 2020-1-3 18:26
    大小: 205.49KB
    上传者: 16245458_qq.com
    针对视频压缩标准H.264中运动估计算法的特点,在兼顾视频图像质量和算法运行时间的基础上,提出了基于视频压缩的快速自适应菱形搜索算法.实验结果表明,该算法与菱形搜索算法相比,搜索时间平均减少了1.5ms,信噪比平均提高了1.3dB.图像与多煤鲰技最mageProcessingandMu…medbTechnoIogy基于视频压缩的快速自适应菱形搜索算法王燕妮1一,樊养余1,彭轲1(1.西北工业大学电子信息学院,陕西西安710072;2.西安建筑科技大学信息与控制工程学院,陕西西安710055)摘要:针对视频压缩标准H.264中运动估计算法的特点,在兼顾视频图像质量和算法运行时间的基础上,提出了基于视频压缩的快速自适应菱形搜索算法。实验结果表明,该算法与菱形搜索算法相比,搜索时间平均减少了1.5ms,信噪比平均提高了1.3dB。关键词:视频压缩自适应运动估计菱形搜索AnewfastadaptiVe出amolldsearchalgorithmonVi……
  • 所需E币: 3
    时间: 2020-1-3 18:26
    大小: 192.88KB
    上传者: quw431979_163.com
    提出了用混沌优化的方法进行自适应中值滤波.该滤波是在自适应中值滤波的基础上,将混沌优化与E-中值滤波结合起来输出最佳值.仿真结果表明,这种中值滤波不仅去噪效果较好,而且对噪声污染严重的图像也能很好地保护图像的细节.图像与多煤l本技求lmageProcessingandMuItimediaTechnolOgy基于混沌优化的自适应中值滤波4张新明,孙印杰(河南师范大学计算机与信息技术学院,河南新乡453007)摘要:提出了用混沌优化的方法进行自适应中值滤波。该滤波是在自适应中值滤波的基础上将混沌优化与E一中值滤波结合起来输出最佳值。仿真结果表明,这种中值滤波不仅去噪效果较好而且对噪声污染严重的图像也能很好地保护图像的细节。关键词:混沌优化自适应中值滤波脉冲噪声E一中值滤波AdaptiVemedian矗lterbasedonehaosoptimization……
  • 所需E币: 4
    时间: 2020-1-4 12:56
    大小: 307.53KB
    上传者: 二不过三
    一种基于FPGA的适用于中小压缩比情况的时域数字脉冲压缩处理器的实现方案.该处理器具有使用灵活、便于功能扩展、成本低的特点,已用于某雷达信号处理机中,性能稳定.基于FPGA的时域数字脉冲压缩处理器的设计王小哲1,秦轶炜2,潘雨1(1.空军工程大学导弹学院,陕西三原713800;2.上海电子通讯设备研究所,上海200082)摘要:一种基于FPGA的适用于中小压缩比情况的时域数字脉冲压缩处理器的实现方案。该处理器具有使用灵活、便于功能扩展、成本低的特点,已用于某雷达信号处理机中,性能稳定。关键词:脉冲压缩自适应FIR滤波器现场可编程逻辑门阵列Designofti面edomajndigitalpulsecompressionprocessorbasedonFPGAWANGXiaoZhel,QINYiWei2,PANYul……
  • 所需E币: 5
    时间: 2019-12-24 23:34
    大小: 298.52KB
    上传者: 978461154_qq
    【技术应用笔记】自适应数字线路长度跟踪AN-850OneTechnologyWaZtP.O.Box9106t/Prwood,MA02062-9106,U.S.A.tTel:781.329.4700tFax:781.461.3113twww.analog.comǖFrankKearney!!RF……
  • 所需E币: 3
    时间: 2019-12-19 13:28
    大小: 15.08MB
    上传者: givh79_163.com
    资料->【C】嵌入系统->【C5】Matlab仿真->【2】数值计算、数字图像与数字信号->【数字信号】->自适应滤波器原理(第三版)1007页15.4M.pdf……
  • 所需E币: 3
    时间: 2019-6-8 08:08
    大小: 985.8KB
    上传者: royalark_912907664
    永磁同步电机在运行时,输出电流的谐波成分对控制的的精确程度造成很大影响,针对这一问题,提出了在永磁同步电机DSP控制器中对反馈电流进行软件滤波。与传统的硬件滤波相比,软件滤波具有结构简单,不增加额外设备等优点。滤波器选用自适应FIR滤波器算法,并对系统进行了仿真,实验,证明了软件滤波的可行性。在实验中,系统反馈电流有了明显的优化,系统的稳定性有了明显提高。证明了在伺服电机控制中自适应滤波的可行性和有效性。
  • 所需E币: 3
    时间: 2019-6-7 20:08
    大小: 980.29KB
    上传者: royalark_912907664
    云计算环境中的任务调度问题一直是云计算研究的重点,任务调度的目的寻找最优的任务调度策略,以高效地完成计算任务。针对云计算环境下资源规模庞大、异构性的特点,为了克服传统调度算法存在的缺点,提出一种基于改进自适应人工鱼群算法的任务调度算法。该算法以任务总执行时间作为目标函数,在迭代过程中动态自适应的调整人工鱼的视野和步长,同时对觅食行为进行改进,加快算法的收敛速度,避免算法陷入局部最优,以此提高任务调度的性能。通过在CloudSim平台进行仿真对比实验,相较于其他智能寻优算法,该算法在任务执行时间和收敛速度上都有明显的优势,是一种有效的任务调度算法。
广告