信号压缩、插值 处理 笔记
1.等距压缩
对于一组数据等步长压缩(等间隔删除一定的点)
2.平均压缩
平均压缩是一个过程算法,即为动态压缩。举例如下:求平均次数为N的压缩结果,每次数据分别为s1, s2, s3, …, sn。
第1次平均:s = s1/1;
第2次平均:s = (s*1+s2)/2;
…
第i次平均:s = (s*(i-1)+si)/i;
…
第n次平均:s = (s*(n-1)+sn)/n;
由于平均压缩为动态过程,所以实现方法有两种:
①多次调用,每次传入当前平均次数和当前信号的数组(本文采用的方法);
②单次调用,一次性传入多个数组(或一个二维数组),自动循环计算。
峰值检测
峰值检测在示波器应用中比较常见,所以就直接贴出来了。这里起始就是找出最值然后抽取保存即可,如每3个取最大值保留。
代码:
close all;
clear,clc;
%% 压缩测试
% 原始信号
t = [ 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 10.000000 11.000000 12.000000 13.000000 14.000000 15.000000 ];
s = [0.000000 0.841471 0.909297 0.141120 -0.756802 -0.958924 -0.279415 0.656987 0.989358 0.412118 -0.544021 -0.999990 -0.536573 0.420167 0.990607 0.650288 ];
%% 普通压缩
t1 = [ 0.000000 2.000000 4.000000 6.000000 8.000000 10.000000 12.000000 14.000000 ];
s1 = [ 0.000000 0.909297 -0.756802 -0.279415 0.989358 -0.544021 -0.536573 0.990607 ];
figure;
plot(t,s,t,s,'bo');
grid on;
hold on;
plot(t1,s1,'r*',t1,s1,'r');
hold off
title('普通压缩');
%% 平均压缩
t2 = [ 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 10.000000 11.000000 12.000000 13.000000 14.000000 15.000000 ];
s2 = [ 0.000000 0.799397 0.863833 0.134064 -0.718962 -0.910978 -0.265445 0.624137 0.939890 0.391513 -0.516820 -0.949991 -0.509744 0.399159 0.941077 0.617773 ];
figure;
plot(t,s,t,s,'bo');
grid on;
hold on;
plot(t2,s2,'mp',t2,s2,'m');
hold off
title('平均压缩');
%% 峰值检测
t3 = [ 0.000000 3.000000 5.000000 6.000000 9.000000 11.000000 12.000000 15.000000 ];
s3 = [ 0.000000 0.141120 -0.958924 -0.279415 0.412118 -0.999990 -0.536573 0.650288 ];
figure;
plot(t,s,t,s,'bo');
grid on;
hold on;
plot(t3,s3,'mh',t3,s3,'m');
hold off
title('峰值检测(最小值)压缩');
插值方法
线性、sinc、三次样条
本文参考及引用自:
https://blog.csdn.net/shengzhadon/article/details/46776543