对此可以用滤波的方法将大的趋势项去掉。
测试的代码如下
% 测试积分对正弦信号的作用
clc
clear
close all
%% 原始正弦信号
ts = 0.001;
fs = 1/ts;
t = 0:ts:1000*ts;
f = 50;
dis = sin(2*pi*f*t); % 位移
vel = 2*pi*f.*cos(2*pi*f*t); % 速度
acc = -(2*pi*f).^2.*sin(2*pi*f*t); % 加速度
% 多个正弦波的测试
% f1 = 400;
% dis1 = sin(2*pi*f1*t); % 位移
% vel1 = 2*pi*f1.*cos(2*pi*f1*t); % 速度
% acc1 = -(2*pi*f1).^2.*sin(2*pi*f1*t); % 加速度
% dis = dis + dis1;
% vel = vel + vel1;
% acc = acc + acc1;
%
结:频域积分正常恢复信号,时域积分恢复加入的高频信息有误差
% 加噪声测试
acc = acc + (2*pi*f).^2*0.2*randn(size(acc));
% 结:噪声会使积分结果产生大的趋势项
figure
ax(1) = subplot(311);
plot(t, dis), title('位移')
ax(2) = subplot(312);
plot(t, vel), title('速度')
ax(3) = subplot(313);
plot(t, acc), title('加速度')
linkaxes(ax, 'x');
% 由加速度信号积分算位移
[disint, velint] = IntFcn(acc, t, ts, 2);
axes(ax(2)); hold on
plot(t, velint, 'r'), legend({'原始信号',
'恢复信号'})
axes(ax(1)); hold
on
plot(t, disint, 'r'), legend({'原始信号', '恢复信号'})