 转载▼
转载▼| 标签: 杂谈 | 分类: matlab | 
http://www.ilovematlab.cn/thread-71818-1-1.html
这里提供一个函数mean5_3(五点三次平滑算法)对数据进行平滑处理:
 load V1.mat
 subplot 211; plot(V1); ylim([2000 7000]); grid;
 y=mean5_3(V1,5);
 subplot 212; plot(y); ylim([2000 7000]); grid;
 
 function y=mean5_3(x,m)
 % x为被处理的数据
 % m 为循环次数
 n=length(x);
 a=x;
 for k=1: m
 b(1) = (69*a(1) +4*(a(2) +a(4)) -6*a(3) -a(5)) /70;
 b(2) = (2* (a(1) +a(5)) +27*a(2) +12*a(3) -8*a(4)) /35;
 for j=3:n-2
 b (j) = (-3*(a(j-2) +a(j+2)) +12*(a(j-1) +a(j+1)) +17*a(j)) /35;
 end
 b (n-1) = (2*(a(n) +a(n-4)) +27*a(n-1) +12*a(n-2) -8*a(n-3)) /35;
 b (n) = (69*a(n) +4* (a(n-1) +a(n-3)) -6*a(n-2) -a(n-4)) /70;
 a=b;
 end
 y =a;
 处理后得图如下,如果还想更平滑,可以修改调用函数时的参数m。