限幅算法
1. 音频信号的AGC
使放大电路的增益随信号强度的变化而自动调整的控制方法,就是AGC-自动增益控制。实现AGC可以是硬件电路,即AGC闭环电子电路,也可以是软件算法。本文主要讨论用软件算法来实现音频信号的AGC。
音频AGC是音频自动增益控制算法,更为准确的说是峰值自动增益控制算法,是一种根据输入音频信号水平自动动态地调整增益的机制。当音量(无论是捕捉到的音量还是再现的音量)超过某一门限值,信号就会被限幅。限幅指的是音频设备的输出不再随着输入而变化,输出实质上变成了最大音量位置上的一条水平线;当检测到音频增益达到了某一门限时,它会自动减小增益来避免限幅的发生。另一方面,如果捕捉到的音量太低时,系统将自动提高增益。当然,增益的调整不会使音量超过用户在调节向导中设置的值。图3是音频AGC算法的结构框图。 首先从串口获取音频数据,它是16位的整型数,一般来说,这些数都是比较小的,通过AGC算法将输入的音频数据投影在一个固定区间内,从而使得不论输入的数据点数值大小都会等比例地向这个空间映射。一方面将获得的音频数据最大值与原来的峰值进行比较,如果有新的峰值出现就计算新的增益系数;另一方面在一定的时间周期内获取一个新的峰值,这个峰值就具有检测性能,又与原峰值比较,然后就计算新的增益系数。这个增益系数是相对稳定的。当音量加大时,信号峰值会自动增加,从而增益系数自动下降;当音量减小时,新的峰值会减小并且取代原来的峰值,从而使峰值下降,使增益系数上升。最后输出的数据乘以新增益系数后映射到音频信号输入的投影区间内。图4是音频信号AGC算法的程序流程图。
AGC_Coff是初始增益系数,初始值为1;maxAGC_in是增益峰值,初始值为0;time是采样点计数,门限值为4096;AGC_in是新的音频数据,MAXArrIn是新的音频增益峰值;映射区间【-20000,20000】。
整个系统的软件部分为5人模块。系统主函数main( )、CMD文件、中断向量表、DSP5402头文件和专为c语言开发的库函数rtdx.lib。其中主函数部分是核心,主要包括:DSP器件初始化、MCBSP1初始化、MCBSP0初始化、AIC23初始化(内部12个可编程寄存器设置)及算法程序等。
在CCS2.0集成开发环境下,采用*.c语言和*.asm语言相结合的方式编写程序。将编写的程序*.c、*.asm和链接程序*.cmd文件编译链接后生成执行目标文件*.out,通过仿真器将执行目标文件*.out下载到系统板上,经过调试、编译并运行,以音乐作为音频信号源输入到系统板上。
2. 神经网络的硬限幅函数是什么举个例子
基于MATLAB的神经网络编程
(1)编程理论
作为比较成熟的算法,软件Matlab中有神经网络工具箱,所以可以借助Matlab神经网络工具箱的强大功能,在此基础上进行二次开发,从繁琐的编程工作中解脱出来,大大提高工作效率。
Matlab的神经网络工具箱是在Matlab环境下所开发出来的许多工具箱之一,它以人工神经网络理论为基础,用Matlab语言构造出典型神经网络的激活函数(如S型、线性等激活函数),使使用者对所选定网络的输出计算编程对激活函数的调用;另外,根据各种修改网络权值的规律,加上网络的训练过程,用Matlab编写出各种网络训练的子程序。这样,使用者可以根据自己的应用要求,直接调用(或加进自己编写的)神经网络子函数,而不必要从事繁琐的编程。
基于Matlab的BP神经网络编程过程如下:
(1)对样本集进行归一化
确定输入样本和输出样本,并对它们进行归一化,将输入和输出样本变换到(0.1,0.9)区间,由于Matlab的归一化函数premnmx把数据变换到(-1,1)之间,所以使用自编premnmx2归一化函数。
(2)创建BP神经网络
在样本集确定之后,即可进行网络的结构设计,在Matlab中一般使用newff创建函数,它不但创建了网络对象,还自动初始化网络的权重和阈值。如果需要重新初始化网络权重和阈值,可以使用Init函数。
关键语句如下:
net=newff(输入样本的取值范围,[网络各层的神经元数目],{网络各层神经元的激活函数},‘训练函数',‘学习函数’,‘性能函数’)
一般选用三层BP网络,输入层、输出层的神经元个数根据具体情况确定,而隐层神经元个数目前多采用经验的方法确定。
(3)设置网络的训练参数
net.trainParam.epochs―最大收敛次数;
net.trainParam.goal―收敛误差;
net.trainParam.show―显示间隔;
以上在一般的神经网络训练中都有使用,本文使用Levenberg-Marquart优化算法进行训练,还需设置的参数有:
net.trainParam.mu―Levenberg-Marquart优化算法中的
net.trainParam.mu_dec― 的缩减因子;
3. 简述数字滤波技术,其算法有哪些
1、定义
所谓数字滤波, 就是通过一定的计算或判断程序减少干扰在有用信号中的比重。 故实质上它是一种程序滤波。
2、算法
算术平均值法、 中位值滤波法、 限幅滤波法、 惯性滤波法。