基于MATLAB的滑动滤波浅析

    xiaoxiao2022-07-14  194


                                  MATLAB的滑动滤波算法

    对于滤波算法:这里不强调数学公式的推理,只要讲一下在工程中的应用,举个最简单的例子,假如有1000个数,4个为一组,那么一共有250组。取第,1,2,3,4个数取平均值,新的数组的第一个向量A的第一个数,A(1);之后取第,2,3,4,5个数的平均值,放入A(2);依次类推。 注意这里不是第1,2,3,4个数为一组,第2,3,4,5个数为一组,若这样则会损失大约750个数。

     

    代码实例

    clear all; clc; A=importdata('E:\MATLAB代码\toulan.txt'); xlswrite('E:\MATLAB代码\toulan.xlsx',A);

     我这里以一个txt中的数据为例作为处理,如果是图像也一样的,但是图像的像素点是二维的,要放入矩阵中,而不是向量内。

    importdata()函数的使用可以了解下,非常好用的一个函数,具体可以用help importdata在matlab的命令窗口中走一下,大致就是给一个文件的地址(filename),返回其中文件的内容。

    xslwrite()这个函数暂时可以忽略,我是将txt文件导出的数据放到一个Excel表格中便于观察才写的。

    B=A(:,7); subplot(3,1,1) plot(B); title('原数据');

    A是在上一个代码例子中从txt文件内得到的数据,我需要其中第七列的所有数据,并把它提取到B中,并用plot打印。

    L=length(B); i=1; N=4; for i=1:L-N C(i)=mean(B(i:i+N-1)); end subplot(3,1,2); plot(C); title('滤波后');

    取B的长度,放入循环中,由于N=4,故取的是每4个数为一组。

    注意for循环的范围,如果有1000个数,那么在996时循环就要停止,因为如果997+4=1001超出范围了,会报错的。

    下面上一组数据,可能不是很明显,所以我做了一个滤波的对比图。

    最新回复(0)