用Matlab分享一個軟件低通濾波算法

前言:前一陣子學習了matlab的一些數據處理的基本操作,但是都沒怎麼用,很多操作忘記了,昨天晚上看到一個濾波算法思想感覺還不錯,現在打算用Matlab來仿真看看具體效果怎樣

正文:

代碼如下:初次寫Matlab的代碼,可能裏面很多不規範的操作,代碼非常簡單。

這裏設置了1000個樣本,並添加一些高斯噪聲,然後做一個類似窗口濾波的操作

clear
t = linspace(1,1000,1000); %採樣頻率
sample = 1000 + randi(100,1000,1) - randi(100,1000,1); %設置一個樣本並添加一定的擾動
filter_s = randi(1,1000,1);%設置一個數組記錄濾波過程中的濾波結果,用於繪圖
filter_c = 0.25; %設置濾波係數
filter_f = zeros(5,1); %定義一個濾波窗口
for i=1:1000 %循環採樣並進行濾波
    filter_f(5)=sample(i) ;%把樣本傳進濾波器
    filter_s(i)=filter_f(1); %記錄濾波過程中的濾波結果,用於繪圖
    for j=5:-1:2 %濾波
        filter_f(j-1)=filter_f(j-1)+filter_c*(filter_f(j)-filter_f(j-1));
    end
end
plot(t,sample); %繪製樣本數據圖
hold on; %在原圖繼續繪製
plot(t,filter_s); %繪製濾波結果
xlabel('t'), ylabel('Data'); %給圖添加標籤
legend('Input Data','Filtered Data'); %兩條曲線添加標籤

然後仿真看結果:

效果還行,對於一些毛刺能夠濾除,而且波形還算比較連續平滑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章