• 回答数

    3

  • 浏览数

    152

索邦大学
首页 > 期刊论文 > 数字信号处理小论文

3个回答 默认排序
  • 默认排序
  • 按时间排序

莹火虫妹妹

已采纳

生物医学信号处理方法论文

生物医学信号处理是指据生物医学信号特点,应用信息科学的基本理论和方法,研究如何从扰和噪声淹没的观察记录中提取各种生物医学信号中所携带的信息,并对它们进步分析、解释和分类。以下是我精心准备的生物医学信号处理方法论文,大家可以参考以下内容哦!

摘 要: 生物医学信号是人体生命信息的集中体现,深入进行生物医学信号检测与处理的理论与方法的研究对于认识生命运动的规律、探索疾病预防与治疗的新方法都具有重要的意义。

关键词: 生物医学信号 信号检测 信号处理

1 概述

1。1 生物医学信号及其特点

生物医学信号是一种由复杂的生命体发出的不稳定的自然信号,属于强噪声背景下的低频微弱信号,信号本身特征、检测方式和处理技术,都不同于一般的信号。生物医学信号可以为源于一个生物系统的一类信号,这些信号通常含有与生物系统生理和结构状态相关的信息。生物医学信号种类繁多,其主要特点是:信号弱、随机性大、噪声背景比较强、频率范围一般较低,还有信号的统计特性随时间而变,而且还是非先验性的。

1。2 生物医学信号分类

按性质生物信号可分为生物电信号(Bioelectric Signals),如脑电、心电、肌电、胃电、视网膜电等;生物磁信号(Biomagnetic Signals),如心磁场、脑磁场、神经磁场;生物化学信号(Biochemical Signals),如血液的pH值、血气、呼吸气体等;生物力学信号(Biomechanical Signals),如血压、气血和消化道内压和心肌张力等;生物声学信号(Bioacoustic Signal),如心音、脉搏、心冲击等。

按来源生物医学信号可大致分为两类:(1)由生理过程自发产生的主动信号,例如心电(ECG)、脑电(EEG)、肌电(EMG)、眼电(EOG)、胃电(EGG)等电生理信号和体温、血压、脉博、呼吸等非电生信号;(2)外界施加于人体、把人体作为通道、用以进行探查的被动信号,如超声波、同位素、X射线等。

2 生物医学信号的检测及方法

生物医学信号检测是对生物体中包含的生命现象、状态、性质和成分等信息进行检测和量化的技术,涉及到人机接口技术、低噪声和抗干扰技术、信号拾取、分析与处理技术等工程领域,也依赖于生命科学研究的进展。信号检测一般需要通过以下步骤(见图1)。

①生物医学信号通过电极拾取或通过传感器转换成电信号;②放大器及预处理器进行信号放大和预处理;③经A/D转换器进行采样,将模拟信号转变为数字信号;④输入计算机;⑤通过各种数字信号处理算法进行信号分析处理,得到有意义的结果。

生物医学信号检测技术包括:(1)无创检测、微创检测、有创检测;(2)在体检测、离体检测;(3)直接检测、间接检测;(4)非接触检测、体表检测、体内检测;(5)生物电检测、生物非电量检测;(6)形态检测、功能检测;(7)处于拘束状态下的生物体检测、处于自然状态下的生物体检测;(8)透射法检测、反射法检测;(9)一维信号检测、多维信号检测;(10)遥感法检测、多维信号检测;(11)一次量检测、二次量分析检测;(12)分子级检测、细胞级检测、系统级检测。

3 生物医学信号的处理方法

生物医学信号处理是研究从扰和噪声淹没的信号中提取有用的生物医学信息的特征并作模式分类的方法。生物医学信号处理的目的是要区分正常信号与异常信号,在此基础上诊断疾病的存在。近年来随着计算机信息技术的飞速发展,对生物医学信号的处理广泛地采用了数字信号分析处理方法:如对信号时域分析的相干平均算法;对信号频域分析的快速傅立叶变换算法和各种数字滤波算法;对平稳随机信号分析的功率谱估计算法和参数模型方法;对非平稳随机信号分析的短时傅立叶变换、时频分布(维格纳分布)、小波变换、时变参数模型和自适应处理等算法;对信号的非线性处理方法如混沌与分形、人工神经网络算法等。下面介绍几种主要的处理方法。

3。1 频域分析法

信号的频域分析是采用傅立叶变换将时域信号x(t)变换为频域信号X(f),从而将时间变量转变成频率变量,帮助人们了解信号随频率的变化所表现出的特性。信号频谱X(f)描述了信号的频率结构以及在不同频率处分量成分的大小,直观地提供了从时域信号波形不易观察得到频率域信息。频域分析的'一个典型应用即是对信号进行傅立叶变换,研究信号所包含的各种频率成分,从而揭示信号的频谱、带宽,并用以指导最优滤波器的设计。

3。2 相干平均分析法

生物医学信号常被淹没在较强的噪声中,且具有很大的随机性,因此对这类信号的高效稳健提取比较困难。最常用的常规提取方法是相干平均法。相干平均(Coherent Average)主要应用于能多次重复出现的信号的提取。如果待检测的医学信号与噪声重叠在一起,信号如果可以重复出现,而噪声是随机信号,可用叠加法提高信噪比,从而提取有用的信号。这种方法不但用在诱发脑电的提取,也用在近年来发展的心电微电势(希氏束电、心室晚电位等)的提取中。

3。3 小波变换分析法

小波分析是传统傅里叶变换的继承和发展,是20世纪80年代末发展起来的一种新型的信号分析工具。目前,小波的研究受到广泛的关注,特别是在信号处理、图像处理、语音分析、模式识别、量子物理及众多非线性科学等应用领域,被认为是近年来在工具及方法上的重大突破。小波分析有许多特性:多分辨率特性,保证非常好的刻画信号的非平稳特征,如间断、尖峰、阶跃等;消失矩特性,保证了小波系数的稀疏性;紧支撑特性,保证了其良好的时频局部定位特性;对称性,保证了其相位的无损;去相关特性,保证了小波系数的弱相关性和噪声小波系数的白化性;正交性,保证了变换域的能量守恒性;所有上述特性使小波分析成为解决实际问题的一个有效的工具。小波变换在心电、脑电、脉搏波等信号的噪声去除、特征提取和自动分析识别中也已经取得了许多重要的研究成果。

3。4 人工神经网络

人工神经网络是一种模仿生物神经元结构和神经信息传递机理的信号处理方法。目前学者们提出的神经网络模型种类繁多。概括起来,其共性是由大量的简单基本单元(神经元)相互广泛联接构成的自适应非线性动态系统。其特点是:(1)并行计算,因此处理速度快;(2)分布式存贮,因此容错能力较好;(3)自适应学习(有监督的或无监督的自组织学习)。

参考文献

[1] 邢国泉,徐洪波。生物医学信号研究概况。咸宁学院学报(医学版),2006,20:459~460。

[2] 杨福生。论生物医学信号处理研究的学科发展战略。国外医学生物医学工程分册,1992,4(15):203~212。

177 评论

多多吃好

% RLS算法 randn('seed', 0) ; rand('seed', 0) ; NoOfData = 8000 ; % Set no of data points used for training Order = 32 ; % 自适应滤波权数 Lambda = ; % 遗忘因子 Delta = ; % 相关矩阵R的初始化 x = randn(NoOfData, 1) ;%高斯随机系列 h = rand(Order, 1) ; % 系统随机抽样 d = filter(h, 1, x) ; % 期望输出 % RLS算法的初始化 P = Delta * eye ( Order, Order ) ;%相关矩阵 w = zeros ( Order, 1 ) ;%滤波系数矢量的初始化 % RLS Adaptation for n = Order : NoOfData ; u = x(n:-1:n-Order+1) ;%延时函数 pi_ = u' * P ;%互相关函数 k = Lambda + pi_ * u ; K = pi_'/k;%增益矢量 e(n) = d(n) - w' * u ;%误差函数 w = w + K * e(n) ;%递归公式 PPrime = K * pi_ ; P = ( P - PPrime ) / Lambda ;%误差相关矩阵 w_err(n) = norm(h - w) ;%真实估计误差 end ; % 作图表示结果 figure ; plot(20*log10(abs(e))) ;%| e |的误差曲线 title('学习曲线') ; xlabel('迭代次数') ; ylabel('输出误差估计') ; figure ; semilogy(w_err) ;%作实际估计误差图 title('矢量估计误差') ; xlabel('迭代次数') ; ylabel('误差权矢量') ; %lms 算法 clear all close all hold off%系统信道权数 sysorder = 5 ;%抽头数 N=1000;%总采样次数 inp = randn(N,1);%产生高斯随机系列 n = randn(N,1); [b,a] = butter(2,); Gz = tf(b,a,-1);%逆变换函数 h= [;;;;;];%信道特性向量 y = lsim(Gz,inp);%加入噪声 n = n * std(y)/(10*std(n));%噪声信号 d = y + n;%期望输出信号 totallength=size(d,1);%步长 N=60 ; %60节点作为训练序列 %算法的开始 w = zeros ( sysorder , 1 ) ;%初始化 for n = sysorder : N u = inp(n:-1:n-sysorder+1) ;% u的矩阵 y(n)= w' * u;%系统输出 e(n) = d(n) - y(n) ;%误差 if n < 20 mu=; else mu=; end w = w + mu * u * e(n) ;%迭代方程 end %检验结果 for n = N+1 : totallength u = inp(n:-1:n-sysorder+1) ; y(n) = w' * u ; e(n) = d(n) - y(n) ;%误差 end hold on plot(d) plot(y,'r'); title('系统输出') ; xlabel('样本') ylabel('实际输出') figure semilogy((abs(e))) ;% e的绝对值坐标 title('误差曲线') ; xlabel('样本') ylabel('误差矢量') figure%作图 plot(h, 'k+') hold on plot(w, 'r*') legend('实际权矢量','估计权矢量') title('比较实际和估计权矢量') ; axis([0 6 ])

数字滤波器在数字信号处理中的应用广泛,是数字信号处理的重要基础。自适应滤波器可以不必事先给定信号及噪声的自相关函数,它可以利用前一时刻已获得的滤波器参数自动地调节现时刻的滤波器参数使得滤波器输出和未知的输入之间的均方误差最小化,从而它可以实现最优滤波。 自适应滤波器的算法有很多,有RLS(递归最小二乘法)和LMS(最小均方算法)等。自适应LMS算法是一种很有用且很简单的估计梯度的方法,在信号处理中得到广泛应用。 本论文主要研究了自适应滤波器的基本结构和原理,然后介绍了最小均方误差算法(LMS算法),并完成了一种基于MATLAB平台的自适应LMS自适应滤波器的设计,同时实现了对信号进行初步的降噪处理。 通过仿真,我们实现了LMS自适应滤波算法,并从结果得知步长和滤波器的阶数是滤波器中很重要的两个参数,并通过修改它们证实了这一点,其中步长影响着收敛时间,而且阶数的大小也会大大地影响自适应滤波器的性能。

自适应滤波器实际上是一种能够自动调整本身参数的特殊维纳滤波器,在设计时不需要预先知道关于输入信号和噪声的统计特性,它能够在工作过程中逐步“了解” 或估计出所需的统计特性,并以此为依据自动调整自身的参数,以达到最佳滤波效果。一旦输入信号的统计特性发生变化,它又能够跟踪这种变化,自动调整参数,使滤波器性能重新达到最佳。 自适应滤波器由参数可调的数字滤波器(或称为自适应处理器)和自适应算法两部分组成,如图7-3所示。参数可调数字滤波器可以是FIR数字滤波器或IIR数字滤波器,也可以是格型数字滤波器。输入信号x(n)通过参数可调数字滤波器后产生输出信号(或响应)y(n),将其与参考信号(或称期望响应)d(n)进行比较,形成误差信号e(n),并以此通过某种自适应算法对滤波器参数进行调整,最终使e(n)的均方值最小。尽管自适应滤波器具有各种不同的算法和结构,但是,其最本质特征是始终不变的。这种最本质的特征可以概括为:自适应滤波器依据用户可以接受的准则或性能规范,在未知的而且可能是时变的环境中正常运行,而无须人为的干预。本章主要讨论的是基于维纳滤波器理论的最小均方(LMS)算法,可以看到LMS算法的主要优点是算法简单、运算量小、易于实现;其主要缺点是收敛速度较慢,而且与输入信号的统计特性有关。 自适应线性滤波器是一种参数可自适应调整的有限冲激响应(FIR)数字滤波器,具有非递归结构形式。因为它的分析和实现比较简单,所以在大多数自适应信号处理系统中得到了广泛应用。如图7-4所示的是自适应线性滤波器的一般形式。输入信号矢量x(n)的L+1个元素,既可以通过在同一时刻对L+1个不同信号源取样得到,也可以通过对同一信号源在n以前L+1个时刻取样得到。前者称为多输入情况,如图7-5所示,后者称为单输入情况如图7-4所示,这两种情况下输入信号矢量都用x(n)表示,但应注意它们有如下区别。 单输入情况: (7-18) 多输入情况: (7-19) 单输入情况下x(n)是一个时间序列,其元素由一个信号在不同时刻的取样值构成;而多输入情况下x(n)是一个空间序列,其元素由同一时刻的一组取样值构成,相当于并行输入。 对于一组固定的权系数来说,线性滤波器是输出y(n)等于输入矢量x(n)的各元素的线性加权之和。然而实际上权系数是可调的,调整权系数的过程叫做自适应过程。在自适应过程中,各个权系数不仅是误差信号e(n)的函数,而且还可能是输入信号的函数,因此,自适应线性滤波器的输出就不再是输入信号的线性函数。 输入信号和输出信号之间的关系为 单输入情况: (7-20) 多输入情况: (7-21) 如图7-4所示的单输入自适应线性滤波器,实际上是一个时变横向数字滤波器,有时称为自适应横向滤波器。它在信号处理中应用很广泛。自适应线性滤波器的L+1个权系数构成一个权系数矢量,称为权矢量,用w(n)表示,即 (7-22) 这样,输出响应表示为 (7-23) 参考响应与输出响应之差称为误差信号,用e(n)表示,即 (7-24) 自适应线性滤波器按照误差信号均方值(或平均功率)最小的准则,即 (7-25) 来自动调整权矢量。

clear all close all %channel system order sysorder = 5 ; % Number of system points N=2000; inp = randn(N,1); n = randn(N,1); [b,a] = butter(2,); Gz = tf(b,a,-1); %This function is submitted to make inverse Z-transform (Matlab central file exchange) %The first sysorder weight value %h=ldiv(b,a,sysorder)'; % if you use ldiv this will give h :filter weights to be h= [; ; ; ; ;]; y = lsim(Gz,inp); %add some noise n = n * std(y)/(10*std(n)); d = y + n; totallength=size(d,1); %Take 60 points for training N=60 ; %begin of algorithm w = zeros ( sysorder , 1 ) ; for n = sysorder : N u = inp(n:-1:n-sysorder+1) ; y(n)= w' * u; e(n) = d(n) - y(n) ; % Start with big mu for speeding the convergence then slow down to reach the correct weights if n < 20 mu=; else mu=; end w = w + mu * u * e(n) ; end %check of results for n = N+1 : totallength u = inp(n:-1:n-sysorder+1) ; y(n) = w' * u ; e(n) = d(n) - y(n) ; end hold on plot(d) plot(y,'r'); title('System output') ; xlabel('Samples') ylabel('True and estimated output') figure semilogy((abs(e))) ; title('Error curve') ; xlabel('Samples') ylabel('Error value') figure plot(h, 'k+') hold on plot(w, 'r*') legend('Actual weights','Estimated weights') title('Comparison of the actual weights and the estimated weights') ; axis([0 6 ]) % RLS 算法 randn('seed', 0) ; rand('seed', 0) ; NoOfData = 8000 ; % Set no of data points used for training Order = 32 ; % Set the adaptive filter order Lambda = ; % Set the fetting factor Delta = ; % R initialized to Delta*I x = randn(NoOfData, 1) ;% Input assumed to be white h = rand(Order, 1) ; % System picked randomly d = filter(h, 1, x) ; % Generate output (desired signal) % Initialize RLS P = Delta * eye ( Order, Order ) ; w = zeros ( Order, 1 ) ; % RLS Adaptation for n = Order : NoOfData ; u = x(n:-1:n-Order+1) ; pi_ = u' * P ; k = Lambda + pi_ * u ; K = pi_'/k; e(n) = d(n) - w' * u ; w = w + K * e(n) ; PPrime = K * pi_ ; P = ( P - PPrime ) / Lambda ; w_err(n) = norm(h - w) ; end ; % Plot results figure ; plot(20*log10(abs(e))) ; title('Learning Curve') ; xlabel('Iteration Number') ; ylabel('Output Estimation Error in dB') ; figure ; semilogy(w_err) ; title('Weight Estimation Error') ; xlabel('Iteration Number') ; ylabel('Weight Error in dB') ;

处理的重要基础。自适应滤波器可以不必事先给定信号及噪声的自相关函数,它可以利用前一时刻已获得的滤波器参数自动地调节现时刻的滤波器参数使得滤波器输出和未知的输入之间的均方误差最小化,从而它可以实现最优滤波。 自适应滤波器的算法有很多,有RLS(递归最小二乘法)和LMS(最小均方算法)等。自适应LMS算法是一种很有用且很简单的估计梯度的方法,在信号处理中得到广泛应用。 本论文主要研究了自适应滤波器的基本结构和原理,然后介绍了最小均方误差算法(LMS算法),并完成了一种基于MATLAB平台的自适应LMS自适应滤波器的设计,同时实现了对信号进行初步的降噪处理。 通过仿真,我们实现了LMS自适应滤波算法,并从结果得知步长和滤波器的阶数是滤波器中很重要的两个参数,并通过修改它们证实了这一点,其中步长影响着收敛时间,而且阶数的大小也会大大地影响自适应滤波器的性能。

clear all close all N=10; %滤波器阶数 sample_N=500; %采样点数 A=1; %信号幅度 snr=10; %信噪比 t=1:sample_N; length_t=100; %期望信号序列长度 d=A*sin(2*pi*t/length_t); %期望信号 M=length(d); %M为接收数据长度 x=awgn(d,snr); %经过信道(加噪声) delta=1/(10*N*(A^2)); %计算能够使LMS算法收敛的delta y=zeros(1,M); h=zeros(1,N); %LMS滤波器系数 h_normalized=zeros(1,N); %归一化LMS滤波器系数 y1=zeros(1,N); for n=N:M %系数调整LMS算法 x1=x(n:-1:n-N+1); %LMS算法 y(n)=h*x1'; e(n)=d(n)-y(n); h=h+delta*e(n)*x1; %NLMS算法 y_normalized(n)=h_normalized*x1'; e_normalized(n)=d(n)-y_normalized(n); h_normalized=h_normalized+e_normalized(n)*x1/(x1*x1'); end error=e.^2; %LMS算法每一步迭代的均方误差 error_normalized=e_normalized.^2; %NLMS算法每一步迭代的均方误差 for n=N:M %利用求解得到的h,与输入信号x做卷积,得到滤波后结果 x2=x(n:-1:n-N+1); y1(n)=h*x2'; y2(n)=h_normalized*x2'; end subplot(411) plot(t,d); axis([1,sample_N,-2,2]); subplot(412) plot(t,x); subplot(413) plot(t,y); subplot(414) plot(t,y_normalized); figure(2) plot(t,error,'r',t,error_normalized,'b');

帮你在百度文库里找到这个算法,自适应噪声抵消LMS算法Matlab仿真,希望对你有帮助。如有问题,可以再讨论解决。

里面有些代码有问题,可以参考,代码还是自己写:! %基于RLS算法的自适应线性预测 clc; clear all; N=300; M=100;%计算的次数 w1=zeros(N,M);w2=zeros(N,M);I=eye(2);e1=zeros(N,M); for k=1:M %产生白噪声 Pv=;%定义白噪声方差 a1=;a2=;o=;r=; m=5000;%产生5000个随机数 v=randn(1,m); v=v*sqrt(Pv);%产生均值为0,方差为Pv的白噪声 %m=1:N; v=v(1:N);%取出前1000个 %plot(m,v);title('均值为0,方差为的白噪声');ylabel('v(n)');xlabel('n'); v=v'; %向量初使化 x=zeros(1,N); x(1)=v(1);%x(0)=v(0) x(2)=v(2)-a1*v(1);%x(1)=v(1)-a1*v(0) w=zeros(2,N); w(:,1)=[0 0]';%w(0)=[0 0]'; X=zeros(2,N); X(:,2)=[v(1) 0]';%X(0)=[0 0]';X(1)=[v(0) 0]' C=zeros(2,2*N); C(:,1:2)=1/o.*I;%C(0)=1/o*I e=zeros(1,N)';%定义误差向量 u=zeros(1,N); g=zeros(2,N); %根据RLS算法进行递推 for n=1:N-2 x(n+2)=v(n+2)-a1*x(n+1)-a2*x(n); X(:,n+2)=[x(n+1) x(n)]'; u(n)=X(:,n+1)'*C(:,2*n-1:2*n)*X(:,n+1); g(:,n)=(C(:,2*n-1:2*n)*X(:,n+1))./(r+u(n)); w(:,n+1)=w(:,n)+g(:,n)*(x(n+1)-X(:,n+1)'*w(:,n)); C(:,2*n+1:2*(n+1))=1/r.*(C(:,2*n-1:2*n)-g(:,n)*X(:,n+1)'*C(:,2*n-1:2*n)); e(n)=x(n+1)-X(:,n+1)'*w(:,n);

w1(:,k)=w(1,:)'; w2(:,k)=w(2,:)';%将每次计算得到的权矢量值储存 e1(:,k)=e(:,1);%将每次计算得到的误差储存 end

end %求权矢量和误差的M次的平均值 wa1=zeros(N,1);wa2=zeros(N,1);en=zeros(N,1); for k=1:M wa1(:,1)=wa1(:,1)+w1(:,k); wa2(:,1)=wa2(:,1)+w2(:,k); en(:,1)=en(:,1)+e1(:,k); end n=1:N; subplot(221) plot(n,w(1,n),n,w(2,n));%作出单次计算权矢量的变化曲线 xlabel('n');ylabel('w(n)');title('w1(n)和w2(n)的单次变化曲线(线性预测,RLS)') subplot(222) plot(n,wa1(n,1)./M,n,wa2(n,1)./M);%作出100次计算权矢量的平均变化曲线 xlabel('n');ylabel('w(n)');title('w1(n)和w2(n)的100次平均变化曲线') subplot(223) plot(n,e(n,1).^2);%作出单次计算e^2的变化曲线 xlabel('n');ylabel('e^2');title('单次计算e^2的变化曲线'); subplot(224) plot(n,(en(n,1)/M).^2);%作出M次计算e^2的平均变化曲线 xlabel('n');ylabel('e^2');title('100次计算e^2的平均变化曲线');

208 评论

summaryzhen

摘 要 FIR数字滤波器是数字信号处理的经典方法,其设计方法有多种,用DSP芯片对FIR滤波器进行设计时可以先在MATLAB上对FIR数字滤波器进行仿真,所产生的滤波器系数可以直接倒入到DSP中进行编程,在编程时可以采用DSP独特的循环缓冲算法对FIR数字滤波器进行设计,这样可以大大减少设计的复杂度,使滤波器的设计快捷、简单。关键词 FIR;DSP;循环缓冲算法1 引言在信号处理中,滤波占有十分重要的地位。数字滤波是数字信号处理的基本方法。数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,因为FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。2 FIR滤波器的基本结构及设计方法 FIR滤波器的基本结构设a i(i=0,1,2,…,N一1)为滤波器的冲激响应,输入信号为 x(n),则FIR滤波器的输入输出关系为: FIR滤波器的结构如图1所示:图 FIR滤波器的设计方法 (1) 窗函数设计法 从时域出发,把理想的无限长的hd(n)用一定形状的窗函数截取成有限长的h(n),以此h(n)来逼近hd(n),从而使所得到的频率响应H(ejω)与所要求的理想频率响应Hd(ejω) 相接近。优点是简单、实用,缺点是截止频率不易控制。 (2) 频率抽样设计法从频域出发, 把给定的理想频率响应Hd(ejω)以等间隔抽样,所得到的H(k)作逆离散傅氏变换,从而求得h(k),并用与之相对应的频率响应H(ejω)去逼近理想频率响应Hd(ejω)。优点是直接在频域进行设计,便于优化,缺点是截止频率不能自由取值。(3) 等波纹逼近计算机辅助设计法前面两种方法虽然在频率取样点上的误差非常小,但在非取样点处的误差沿频率轴不是均匀分布的,而且截止频率的选择还受到了不必要的限制。因此又由切比雪夫理论提出了等波纹逼近计算机辅助设计法。它不但能准确地指定通带和阻带的边缘,而且还在一定意义上实现对所期望的频率响应实行最佳逼近。3 循环缓冲算法对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。5级循环缓冲区的结构如图所示,顶部为低地址。……由上可见,虽然循环缓冲区中新老数据不很直接明了,但是利用循环缓冲区实现Z-1的优点还是很明显的:它不需要数据移动,不存在一个极其周期中要求能进行一次读和一次写的数据存储器,因而可以将循环缓冲区定位在数据存储器的任何位置(线性缓冲区要求定位在DARAM中)。实现循环缓冲区间接寻址的关键问题是:如何使N个循环缓冲区单元首位相邻?要做到这一点,必须利用BK(循环缓冲器长度)器存器实现按模间接寻址。可用的指令有:… *ARx+% ;增量、按模修正ARx:addr=ARx,ARx=circ(ARx+1)… *ARx-% ;减量、按模修正ARx:addr=ARx,ARx=circ(ARx-1)… *ARx+0% ;增AR0、按模修正ARx:addr=ARx,ARx=circ(ARx+AR0)… *ARx-0% ;减AR0、按模修正ARx:addr=ARx,ARx=circ(ARx-AR0)… *+ARx(lk)% ;加(lk)、按模修正ARx:addr=circ(ARx+lk),ARx=circ(ARx+AR0)其中符号“circ”就是按照BK(循环缓冲器长度)器存器中的值(如FIR滤波其中的N值),对(ARx+1)、(ARx-1)、(ARx+AR0)、(ARx-AR0)或(ARx+lk)值取模。这样就能保证循环缓冲区的指针ARx始终指向循环缓冲区,实现循环缓冲区顶部和底部单元相邻。循环寻址的算法可归纳为:if 0 index + step < BK: index = index + stepelse if index + step BK: index = index + step – BKelse if index + step < BK: index = index + step + BK上述算法中,index是存放在辅助寄存器中的地址指针,step为步长(亦即变址值。步长可正可负,其绝对值晓予或等于循环缓冲区长度BK)。依据以上循环寻址算法,就可以实现循环缓冲区首位单元相邻了。 为了使循环缓冲区正常进行,除了用循环缓冲区长度寄存器(BK)来规定循环缓冲区的大小外,循环缓冲区的起始地址的k个最低有效位必须为0。K值满足2k>N,N微循环缓冲区的长度。4 FIR滤波器在DSP上的实现对于系数对称的FIR滤波器,由于其具有线性相位特征,因此应用很广,特别实在对相位失真要求很高的场合,如调制解调器(MODEM)。例如:一个N=8的FIR滤波器,若a(n)=a(N-1-n),就是对称FIR滤波器,其输出方程为:y(n)= a0x(n)+ a1x(n-1)+ a 2x(n-2)+ a 3x(n-3)+ a 3x(n-4)+ a 2x(n-5)+ a1x(n-6)+ a0x(n-7)总共有8次乘法和7次加法,如果改写成: y(n)= a0 [x(n)+ x(n-7)]+ a1 [ x(n-1)+ x(n-6)]+ a 2 [ x(n-2)+ x(n-5)]+ a 3 [ x(n-3)+ x(n-4)]则变成4次乘法和7次加法。可见,乘法运算的次数减少了一半。这是对称FIR的又一个优点。对称FIR滤波器C54X实现的要点如下:(1)数据存储器中开辟两个循环缓冲算区:新循环缓冲区中存放新数据,旧循环缓冲区中存放老数据。循环缓冲区的长度为N/2。 (2)设置循环缓冲区指针:AR2指向新循环缓冲区中最新的数据,AR3指向旧循环缓冲区中最老的数据。 (3)在程序存储器中设置系数表。 (4)AR2+ AR3 AH(累加器A的高位),AR2-1AR2,AR3-1 AR3 (5)将累加器B清零,重复执行4次(i=0,1,2,3):AH*系数ai+B B,系数指针(PAR)加1。AR2+ AR3AH,AR2和AR3减1。 (6)保存和输出结果。 (7)修正数据指针,让AR2和AR3分别指向新循环缓冲区中最老的数据和旧循环缓冲区中最老的数据。 (8)用新循环缓冲区中最老的数据替代旧循环缓冲区中最老的数据,旧循环缓冲区指针减1。 (9)输入一个新的数据替代新循环缓冲区中最老的数据。 重复执行第(4)至(9)步。 在编程中要用到FIRS(系数对称有限冲击响应滤波器)指令,其操作步骤如下: FIR Xmem,Ymem,Pmem 执行 Pmad PAR 当(RC)≠0 (B)+(A(32-16))×(由PAR寻址Pmem)B ((Xmem)+(Ymem))<<16A (PAR)+1PAR (RC)-1RC FIRS指令在同一个及其周期内,通过C和D总线读2次数据存储器,同时通过P总线读一个系数 本文对FIR滤波器在DSP上的实现借助了MATLAB,其设计思路为:(1)MATLAB环境下产生滤波器系数和输入的数据,并仿真滤波器的滤波过程,可视化得到滤波器对动态输入数据的实时滤波效果;(2)将所得滤波器系数直接导入CCStudio中,再把滤波器的输入数据作为CCStudio设计的滤波起的输入测试数据存储在C54x数据空间中; (3)在CCStudio环境下结合FIR滤波的公式适用汇编语言设计FIR滤波程序,使用MATLAB产生的滤波器系数和输入测试数据进行计算,把输入数据和滤波结果借助CCStudio菜单中的View/Graph/Time/Frequency子菜单用图形方式显示出来(结果如图2);图2 (a)输入数据(Input)图2(b)滤波后的数据(Output) 将FIR滤波的入口数据地址改为外部I/O空间或McBSP口的读写数据地址,或数据空间内建缓冲地址;将FIR滤波的结果数据地址改为外部I/O空间或McBSP口的输出数据地址,或数据空间内建缓冲地址,则完成了基于C54xDSP的实时数据FIR滤波程序。参考文献:[1] 程佩青.数字信号处理教程[M].北京:清华大学出版社 1999年[2] 孙宗瀛,谢鸿林.TMS320C5xDSP原理设计与应用[M].北京:清华大学出版社.2002年[3] 陈亚勇等 编著.MATLAB信号处理详解[M].北京:人民邮电出版社.2001年[4] Texas Assembly Language Tools User’s Guide[5] Texas DSP Programmer’s Guide

232 评论

相关问答

  • 肌电信号处理毕业论文

    这类论文还是比较好写的,去淘宝的“翰林书店”找几篇想管论文,移花接木下应该就可以应付啦哈

    xiaowanziji 3人参与回答 2023-12-08
  • 雷达信号处理论文题目

    基于FPGA的红外图像处理算法的设计与实现

    danyanpimmwo 4人参与回答 2023-12-08
  • 数字信号论文

    4G通信技术的发展及应用探析论文 一、4G通信技术发展优势 1.1网络速度更快 4G网络表现出的最大优势在于其具备的无线通信速度,根据研究者预测,未来,4G通信

    可不娇气 4人参与回答 2023-12-10
  • 声音信号处理期刊

    收录有关语音信号处理文章的期刊刊种有(关键字检索数量由多到少排列):信号处理、电声技术、数据采集与处理、计算机诚诚与应用、微计算机信息、现代电子技术、声学学报(

    huangmanjing 4人参与回答 2023-12-09
  • 数字信号处理器的研究与设计论文

    电气毕业设计目录0018031单片机实现电阻炉温度的控制002IC卡003PLC温度控制系统004RTX-51005玻璃退火006测温系统以数据采集系统007车

    夕阳下看晚霞 2人参与回答 2023-12-10