當前位置:首頁 » 操作系統 » 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 常與其它濾波器搭配使用。

熱點內容
ftpdos命令上傳 發布:2025-01-31 08:14:44 瀏覽:105
intenumjava 發布:2025-01-31 08:14:37 瀏覽:802
android3x 發布:2025-01-31 08:13:03 瀏覽:600
如何購買安卓版live2d 發布:2025-01-31 08:13:01 瀏覽:279
python交互輸入 發布:2025-01-31 08:12:53 瀏覽:427
requestdatapython 發布:2025-01-31 08:02:01 瀏覽:44
javades加密工具 發布:2025-01-31 07:54:04 瀏覽:244
電話如何配置ip 發布:2025-01-31 07:48:48 瀏覽:300
2021賓士e300l哪個配置性價比高 發布:2025-01-31 07:47:14 瀏覽:656
sqlserver2008光碟 發布:2025-01-31 07:32:13 瀏覽:578