当前位置:首页 » 操作系统 » matlab滤波算法

matlab滤波算法

发布时间: 2023-09-08 06:22:20

‘壹’ 用matlab如何去除波形毛刺,滤波

用matlab数值滤波去除波形毛刺的方法:
1)毛刺不是特别大,可是使用滑动平均窗滤波;
2)用cftool工具箱拟合数据;
3)用神经网络做个函数拟合。
matlab简介:
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,慧芦御主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计哗改算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须前岩进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

‘贰’ 扩展卡尔曼滤波(EKF)算法详细推导及仿真(Matlab)

姓名:王柯祎

学号:20021110373T

转自 :https://blog.csdn.net/gangdanerya/article/details/105105611

【嵌牛导读】介绍扩展卡尔曼滤波(EKF)算法的详细推导,局限性和MATLAB仿真。

【嵌牛鼻子】扩展卡尔曼滤波(EKF)

【嵌牛正文】

扩展卡尔曼滤波算法 是解决非线性状态估计问题最为直接的一种处理方法,尽管EKF不是最精确的”最优“滤波器,但在过去的几十年成功地应用到许多非线性系统中。所以在学习非线性滤波问题时应该先从EKF开始。

EKF算法是将非线性函数进行泰勒展开,然后省略高阶项,保留展开项的一阶项,以此来实现非线性函数线性化,最后通过卡尔曼滤波算法近似计算系统的状态估计值和方差估计值。

一、EKF算法详细推导

【注】EKF推导参考的是黄蔚的博士论文“CKF及鲁棒滤波在飞行器姿态估计中的应用研究”,论文中EKF,UKF和CKF等算法讲解的都很详细,值得一看。

我们把KF与EKF算法拿出来对比可以发现:

二、EKF算法局限性:

该算法线性化会引入阶段误差从而导致滤波精度下降,同时当初始状态误差较大或系统模型非线性程度较高时,滤波精度会受到严重影响甚至发散。

需要计算雅克比矩阵,复杂,计算量大,影响系统的实时性,还会导致EKF算法的数值稳定性差。

当系统存在模型失配,量测干扰,量测丢失,量测延迟或状态突变等复杂情况时,EKF算法鲁棒性差。

三、Matlab仿真:

clear all;clc;   close all;

tf = 50; 

Q = 10;w=sqrt(Q)*randn(1,tf); 

R = 1;v=sqrt(R)*randn(1,tf);

P =eye(1);

x=zeros(1,tf);

Xnew=zeros(1,tf);

x(1,1)=0.1; 

Xnew(1,1)=x(1,1);

z=zeros(1,tf);

z(1)=x(1,1)^2/20+v(1);

zjian=zeros(1,tf);

zjian(1,1)=z(1);

for k = 2 : tf

%%%%%%%%%%%%%%%模拟系统%%%%%%%%%%%%%%%

    x(:,k) = 0.5 * x(:,k-1) + (2.5 * x(:,k-1) / (1 + x(:,k-1).^2)) + 8 * cos(1.2*(k-1)) + w(k-1); 

    z(k) = x(:,k).^2 / 20 + v(k);

%%%%%%%%%%%%%%%EKF开始%%%%%%%%%%%%%%%

    Xpre = 0.5*Xnew(:,k-1)+ 2.5*Xnew(:,k-1)/(1+Xnew(:,k-1).^2) + 8 * cos(1.2*(k-1));  

    zjian =Xpre.^2/20;

    F = 0.5 + 2.5 * (1-Xnew.^2)/((1+Xnew.^2).^2);

    H = Xpre/10;    

    PP=F*P*F'+Q; 

    Kk=PP*H'*inv(H*PP*H'+R);

    Xnew(k)=Xpre+Kk*(z(k)-zjian);

    P=PP-Kk*H*PP;

end

  t = 2 : tf;  

 figure;   plot(t,x(1,t),'b',t,Xnew(1,t),'r*');  legend('真实值','EKF估计值');

仿真结果:

‘叁’ 用matlab设计低通滤波器

matlab 低通滤波器设计步骤:
根据数字滤波器的技术指标先设计过渡模拟滤波器得到系统函数ha(s),然后将ha(s)按某种方法(本实验采用双线性变换法)转换成数字滤波器的系统函数h(z)。具体为:
(1)确定巴特沃斯数字低通滤波器的技术指标:通带边界频率ωp,阻带截止频率ωs,通带最大衰减аp,阻带最小衰减аs。
(2)将数字滤波器的技术指标转换为模拟滤波器的技术指标。这里指ωp和ωs的变换而аp和аs保持不变。本题采用双线性变换法,其转换公式为:
(3)根据技术指标ωp、ωs、ωp和ωs用下面公式求出滤波器的阶数。
(4)根据n由表1.4求出归一化极点kp和归一化低通原型系统函数ga(p)。

低通滤波器简介:
低通滤波器概念有许多不同的形式,其中包括电子线路(如音频设备中使用的hiss 滤波器)、平滑数据的数字算法、音障(acoustic barriers)、图像模糊处理等等,这两个工具都通过剔除短期波动、保留长期发展趋势提供了信号的平滑形式。
低通滤波器在信号处理中的作用等同于其它领域如金融领域中移动平均数(moving average)所起的作用;
低通滤波器有很多种,其中,最通用的就是巴特沃斯滤波器和切比雪夫滤波器。

‘肆’ 用MATLAB编程实现均值滤波算法

1:smoothingAverageFilterMain.mclc;clear;fid = fopen('lenai.raw');temp= fread(fid, [256,256]);LenaRaw=uint8(temp');subplot(1,2,1) Imshow(LenaRaw);title('原始图像')subplot(1,2,2) Imshow(smoothingAverageFilter(LenaRaw,3));title('自制函数,使用用3*3模板,均值滤波图像')2:smoothingAverageFilter.mfunction returnData=smoothingAverageFilter(arg,arg2)[Iwidth,Ilength]=size(arg);temp=double(arg);returnData=zeros(Iwidth,Ilength);totalLength=arg2*arg2;for i=1:Iwidth-arg2+1 for j=1:Ilength-arg2+1 % temp(i,j)=average(arg(i:i+arg2,j:j+arg2)); sum=0.0; for n=1:arg2 for k=1:arg2 sum=sum+temp(i+n-1,j+k-1); end end returnData(i,j)=sum/totalLength; endendreturnData=uint8(returnData);end

‘伍’ 变步长LMS自适应滤波算法的MATLAB程序

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');

‘陆’ 我想问一下:怎么用matlab编写函数对图像进行高斯滤波以去除噪声

2. 噪声及其噪声的 Matlab 实现
imnoise 函数
格式:J=imnoise(I,type)
J=imnoise(I,type,parameter)
说明:J=imnoise(I,type) 返回对图像 I 添加典型噪声后的有噪图像 J ,参数 type 和 parameter 用于确定噪声的类型和相应的参数。

加权领域平均算法来进行滤波处理
由实验我们可以看出,一般的滤波器在对图像进行噪声滤除的同时对图像中的细节部分有不同程度的破坏,都不能达到理想的效果。但是采用加权的邻域平均算法对图像进行噪声滤除, 不仅能够有效地平滑噪声, 还能够锐化模糊图像的边缘。 加权的邻域平均算法的基本思想是: 在一个邻域内, 除了可以利用灰度均值外, 灰度的上偏差和下偏差也能够提供某些局部信息。算法的计算公式描述如下, 用f (x ,y ) 表示原始图像, g (x , y ) 为平滑后点(x , y ) 的灰度值,V x , y 表示以点(x , y ) 为中心的邻域, 该邻域包含N 个象素,m (x , y ) 表示邻域V x , y 内的灰度均值。NI表示邻域内大于平均值的像素个数,Ng表示小于平均值的像素个数,而N0表示等于平均值的像素个数。则修正的邻域平均法由下式给出:

m - A�0�3 m l; N l > max{N g ,N 0}
g(x,y)= m + A�0�3 m g; N g > max{N l ,N 0} (1)
m ; else

(1)式(1) 中, A为修正系数, 取值范围为0~ 1, 其大小反映V x , y 中的边缘状况。 以上是我认为在图像处理中比较有价值的两点,有兴趣的可以上网查阅相关的资料。
3. 图像滤波的 Matlab 实现
3.1 conv2 函数
功能:计算二维卷积
格式:C=conv2(A,B)
C=conv2(Hcol,Hrow,A)
C=conv2(...,'shape')
说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:
》full 为缺省值,返回二维卷积的全部结果;
》same 返回二维卷积结果中与 A 大小相同的中间部分;
valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。

3.2 conv 函数
功能:计算多维卷积
格式:与 conv2 函数相同

3.3 filter2函数
功能:计算二维线型数字滤波,它与函数 fspecial 连用
格式:Y=filter2(B,X)
Y=filter2(B,X,'shape')
说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大小与 X 一样;对于 Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取值如下:
》full 返回二维相关的全部结果,size(Y)>size(X);
》same 返回二维互相关结果的中间部分,Y 与 X 大小相同;
》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y)<size(X) 。

3.4 fspecial 函数
功能:产生预定义滤波器
格式:H=fspecial(type)
H=fspecial('gaussian',n,sigma) 高斯低通滤波器
H=fspecial('sobel') Sobel 水平边缘增强滤波器
H=fspecial('prewitt') Prewitt 水平边缘增强滤波器
H=fspecial('laplacian',alpha) 近似二维拉普拉斯运算滤波器
H=fspecial('log',n,sigma) 高斯拉普拉斯(LoG)运算滤波器
H=fspecial('average',n) 均值滤波器
H=fspecial('unsharp',alpha) 模糊对比增强滤波器
说明:对于形式 H=fspecial(type) ,fspecial 函数产生一个由 type 指定的二维滤波器 H ,返回的 H 常与其它滤波器搭配使用。

热点内容
des加密毕业论文 发布:2025-01-31 02:57:01 浏览:710
ip跨网段访问 发布:2025-01-31 02:44:42 浏览:708
算法带头人 发布:2025-01-31 02:42:25 浏览:551
方舟上传数据 发布:2025-01-31 02:42:25 浏览:835
铃木uy比uu多了什么配置 发布:2025-01-31 02:34:11 浏览:676
虾米音乐缓存文件夹 发布:2025-01-31 02:34:04 浏览:886
主播用什么我的世界启动器玩服务器 发布:2025-01-31 02:32:37 浏览:643
做电脑硬件需要哪些配置 发布:2025-01-31 02:30:53 浏览:439
小米智能门锁验证密码是多少 发布:2025-01-31 02:30:50 浏览:533
oracle和sql区别 发布:2025-01-31 02:27:40 浏览:241