完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
MATLAB中进行软件滤波仿真
我身边有些朋友说现在在学校学习什么拉氏变换,Z变换,傅立叶变换没有用,传递函数没有用,差分方程没有用,只是纸上谈兵。我这里先就传递函数和拉氏变换和差分方程介绍几点不自量力的看法。我们学习拉氏变换主要是为了从脱离时域,因为时域分析有它的难度指数,我们从时域映射到S域,目的只有一个,那就是简化计算。正如我们在时域要计算卷积过来,卷积过去,我们把它映射到S域过后,就是乘积过来积乘过去。相对来说,乘积要比卷积的积分要温柔得多。然后我们在S域里面得到结论过后,再将其反映射回到时域,然后自然地在时域使用其所得的结论了。 以下仅举两个例子,就一阶惯性滤波器和二阶滤波器的算法实现做简要介绍。如下,我们很容易写出其传递函数,G(s)=。../。..,在G(s)中,S项即为微分项,计算机中,微分即为差分,因为我们是因果系统,即使用后项差分代替微分,例如:sU(t)转化为U(K)-U(K-1)。如此一来,代入传递函数简将传递函数化后,再将其写编成软件仿真。相对于我自己,觉得最快的方式就是MATLAB算法仿真,如下即为仿真结果,二阶滤波器仿真同理。在调整相应参数的时候,即可看成在硬件电路中调整R、C的参数一样。 一、一阶惯性滤波器软件实现 clear,clc Data = load(‘usefuldata.txt’); plot(Data); title(‘original data’); T = 5;%电路综合参数(融合了电容电阻和微分时间参数) 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’); 以下是仿真结果: 1、原始数据的波形: 2、滤波过后的数据的波形: 二、二阶惯性滤波器软件实现 MATLAB代码如下: %LRC滤波器软件实现 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)。.. %表明本行还没有结束 * Data2(i - 1) - T * L * C * Data2(i - 2)) / (T * L * C + 1 + T * R * C); end figure plot(Data2); title(‘handled data’); 以下是仿真结果: 1、原始数据的波形: 2、滤波过后的数据的波形: 以上程序中,只是用了MATLAB的仿真功能,没有调用MATLAB的滤波函数,所以完全可以将MATLAB程序翻译成C语言后嵌入下位机软件中使用。 虽然上述两类滤波算法并没有FFT和小波分析进行滤波来的高大上,更没有后两者来的直接,但在一些简单数据处理中有它独特的优势。建议AD采样进来的数据进行简单滤波,因为一般应用都不会在AD上面做很精确的基准电压。 |
|
|
|
只有小组成员才能发言,加入小组>>
944 浏览 2 评论
12849 浏览 0 评论
4140 浏览 7 评论
2350 浏览 9 评论
2180 浏览 2 评论
469浏览 2评论
826浏览 2评论
946浏览 2评论
418浏览 1评论
656浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:11 , Processed in 0.871370 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号