一階二階電路濾波器的軟件方式實現(xiàn)
MATLAB中進行軟件濾波仿真
本文引用地址:http://butianyuan.cn/article/201612/327994.htm我身邊有些朋友說現(xiàn)在在學(xué)校學(xué)習(xí)什么拉氏變換,Z變換,傅立葉變換沒有用,傳遞函數(shù)沒有用,差分方程沒有用,只是紙上談兵,我這里先就傳遞函數(shù)和拉氏變換和差分方程介紹幾點不自量力的看法,我們學(xué)習(xí)拉氏變換主要是為了從脫離時域,因為時域分析有它的難度指數(shù),我們從時域映射到S域,目的只有一個,那就是簡化計算,正如我們在時域要計算卷積過來,卷積過去,我們把它映射到S域過后,就是乘積過來積乘過去,相對來說,乘積要比卷積的積分要溫柔的多,然后我們在S域里面得到結(jié)論過后,再將其反映射回到時域,然后自然地在時域使用其所得的結(jié)論了。
以下僅舉兩個例子,就一階慣性慣性濾波器和二階濾波器的算法實現(xiàn)做簡要介紹,如下,我們很容易寫出其傳遞函數(shù),G(s)=.../...,在G(s)中,S項即為微分項,計算機中,微分即為差分,因為我們是因果系統(tǒng),即使用后項差分代替微分,例如:sU(t)轉(zhuǎn)化為U(K)-U(K-1),如此一來,代入傳遞函數(shù)簡將傳遞函數(shù)化后,再將其寫編成軟件仿真。相對于我自己,覺得最快的方式就是MATLAB算法仿真,如下即為仿真結(jié)果,二階濾波器仿真同理。在調(diào)整相應(yīng)參數(shù)的時候,即可看成在硬件電路中調(diào)整R、C的參數(shù)一樣。
一、一階慣性濾波器軟件實現(xiàn)
clear,clc
Data = load('usefuldata.txt');
plot( Data );
title('original data');
T = 5;%電路綜合參數(shù)(融合了電容電阻和微分時間參數(shù))
Data2 = zeros( size( Data ) );
Data2( 1 ) = Data( 1 );
[ H V ] = size( Data );
for i =2:V
Data2( i ) = ( Data( i ) + T * Data2( i - 1) ) / ( T+1 );
end
figure
plot(Data2);
title('handled data');
以下是仿真結(jié)果:
1、原始數(shù)據(jù)的波形:
2、濾波過后的數(shù)據(jù)的波形:
二、二階慣性濾波器軟件實現(xiàn)
MATLAB代碼如下:
%LRC濾波器軟件實現(xiàn)
clear,clc
Data = load('usefuldata.txt');
plot( Data );
title('original data');
T = 0.001;%微分時間
R = 100000;%電路電阻
C = 0.1;%濾波電容
L = 0.02;%濾波電感
Data2 = zeros( size( Data ) );
Data2( 1 ) = Data( 1 );
Data2( 2 ) = Data( 2 );
[ H V ] = size( Data );
for i =3:V
Data2( i ) = ( Data( i ) + ( T * R * C + 2 * T * L * C )... %表明本行還沒有結(jié)束
* Data2( i - 1) - T * L * C * Data2( i - 2 ) ) / ( T * L * C + 1 + T * R * C );
end
figure
plot(Data2);
title('handled data');
以下是仿真結(jié)果:
1、原始數(shù)據(jù)的波形:
2、濾波過后的數(shù)據(jù)的波形:
以上程序中,只是用了MATLAB的仿真功能,沒有調(diào)用MATLAB的濾波函數(shù),所以完全可以將MATLAB程序翻譯成C語言后嵌入下位機軟件中使用。
雖然上述兩類濾波算法并沒有FFT和小波分析進行濾波來的高大上,更沒有后兩者來的直接,但在一些簡單數(shù)據(jù)處理中有它獨特的優(yōu)勢。建議AD采樣進來的數(shù)據(jù)進行簡單濾波,因為一般應(yīng)用都不會在AD上面做很精確的基準電壓。
評論