【发布时间】:2018-01-09 07:27:53
【问题描述】:
我正在研究测量方向盘绝对角度的方向盘角度传感器。由于转向角传感器使用完全与硬件相关的齿轮和几个关节,因此尽管由于使用机械部件以及由于某些环境和道路条件而随着时间的推移进行校准,但传感器的值会出现一些错误(例如偏移、相位变化、信号平坦化、延迟)。
简而言之,由于测量中的这些错误,我们的目标会分心,这意味着如果我正在查看速度与时间的曲线,那么如果在原始或校准传感器中简而言之接近理想条件传感器,我的速度会显示振幅峰值,但由于测量信号中的误差(滞后) 我没有在速度曲线上达到峰值,或者我的曲线变平了,所以这会影响我的最终任务。
我对滞后有 1.20 度的容差,这就是为什么我对我的信号有详细的了解,并想观察我的信号是否有一些变化意味着我的信号中是否发生了偏移、延迟、降低。这不仅会为我提供一个想法,即是减少用于我的任务的传感器数量,还是对传感器的硬件进行一些更改以减少滞后量,或者采取一些其他措施来减少滞后量。
到目前为止我所做的事情我不确定我是对还是错。我得到了一些滞后值,但我对我正在使用的一种技术几乎没有疑问。如果有人向我提供有关如何改进此技术的想法或为我提供更好的方法,那将是很好的指导。
我有一个理想的传感器信号(在我们想要的理想条件下)和来自 1 个传感器的值我有来自汽车的 6 个不同驱动器的数据。我只解释了我的第一个驱动器的一个示例及其与我的参考传感器数据的关系。
给定数据参考信号和大小为 1x1626100 和 1 x 1626100 双倍的传感器信号数据,从传感器读取一个读数,但在所有读数中,理想信号和测量信号相对于时间的所有读数都相同。
简而言之,我想找出传感器信号与测量信号的滞后差异。
在这种方法中,我应用了回归线技术(关于差分信号的上限和下限)。
我对我的信号进行了差分(参考 - 对信号施加限制后的信号测量值)。
应用回归技术,我自己在差异信号的上下设置一个阈值,分别在上限值和下限值上,上下值回归线之间的差异称为滞后(损失)。请看图 3 和图 4 以获得清晰的视图。
这种技术的问题在于,在查看 up= 0.4、low= -0.4 等数据后,我自己定义了上下回归线的值。
问题:
是否有可能我可以编写一个程序来自行决定最佳拟合线而不是给出阈值?
意味着有什么方法可以让我的代码为上述值绘制最佳回归线,为较低值绘制最佳回归线并计算滞后。
我将非常感谢大家,因为我仍然无法找到解决此问题的方法。
感谢期待。
clear all
clc
drv(6)=load('20170420__142024.mat');
t=drv(6).q_T0;
ref=drv(6).Pos;
lws_7=drv(6).SteeringWheelAngle;
swav=drv(6).SteeringWhellRotSpd;
vel=drv(6).KBI_angez_Geschw;
sig_diff=ref-lws_7;
mean_sig_diff = mean(sig_diff);
offset_removed_sig_diff = detrend(sig_diff ,'constant' );
offset_removed_mean_sig_diff = detrend(mean_sig_diff ,'constant');
figure(1)
ax11=subplot(321);
histfit(sig_diff)
dum=['Drive ' num2str(i) ': Differnce Signal With offset Removed for drive '];
title(dum)
hold on
plot([mean_sig_diff mean_sig_diff],[0 10000],'r')
hold off
ax12=subplot(322);
histfit(offset_removed_sig_diff)
dum=['Drive ' num2str(i) ': Differnce Signal With offset Removed'];
title(dum)
hold on
plot([offset_removed_mean_sig_diff offset_removed_mean_sig_diff],[0 10000],'r')
hold off
swvel_thres=20;
vehvel=60;
SAmax=90;
t_lim=t(((lws_7<SAmax)&(lws_7>-SAmax)&(swav<swvel_thres)&(vel>vehvel)));
sig_diff_lim = sig_diff((lws_7<SAmax)&(lws_7>-SAmax)& (swav<swvel_thres)&(vel>vehvel));
offset_rem_sig_diff_lim = detrend(sig_diff_lim,'constant');
mean_sig_diff_lim = mean(sig_diff_lim);
offsetmean_sig_diff_lim = detrend(mean_sig_diff_lim,'constant');
figure(2)
ax21=subplot(321);
histfit(sig_diff_lim)
dum=['Drive ' num2str(i) ': Limited Differnce Signal With offset Removed for drive '];
title(dum)
hold on
plot([ mean_sig_diff_lim mean_sig_diff_lim],[0 10000],'r')
hold off
ax22=subplot(322);
histfit(offset_rem_sig_diff_lim )
dum=['Drive ' num2str(i) ': Limited Differnce Signal With offset Removed'];
title(dum)
hold on
plot([offsetmean_sig_diff_lim offsetmean_sig_diff_lim],[0 10000],'r')
hold off
up=0.4;
low=-up;
stats_up = regstats(offset_rem_sig_diff_lim((offset_rem_sig_diff_lim>up)),t_lim((offset_rem_sig_diff_lim>up)), 'linear', {'beta'}); %calculate linear regression for upper values
intercept_up=stats_up.beta(1);
slope_up=stats_up.beta(2);
stats_low = regstats(offset_rem_sig_diff_lim((offset_rem_sig_diff_lim<low)),t_lim((offset_rem_sig_diff_lim<low)), 'linear', {'beta'}); %calculate linear regression for upper values
intercept_low=stats_low.beta(1);
slope_low=stats_low.beta(2);
Hysteresis_LinReg = abs(intercept_low)+abs(intercept_up);
figure(4)
% ax31=subplot(321);
plot(t_lim, offset_rem_sig_diff_lim ,t_lim, t_lim*slope_up+intercept_up, t_lim ,t_lim*slope_low+intercept_low);grid
legend('diff','reg up','reg low')
title(' Limited Differnce Signal With offset Removed with regression lines for drive ')
figure(5)
histfit(offset_rem_sig_diff_lim)
dum=['Drive ' num2str(i) ':Offset Removed Limited Difference Signal with Regression Lines for drive '];
title(dum)
hold on
plot([ intercept_up intercept_up],[0 12000],'r')
hold off
hold on
plot([intercept_low intercept_low],[0 12000],'r')
hold off
【问题讨论】:
-
我不确定我是否理解 - 您是否需要帮助获取带有“三角形”的绘图下方的绘图或获取它不是问题,您只想自动分隔绘图上的点在它下面以适合两条线?
-
没有这个三角形的图片上传只是为了理解。我附上了另一张图片,希望它有助于理解我的问题。实际上在这个图中有一条绿色和红色的线。现在从我的代码中我提到了一个值 0.4 来绘制这些线并执行计算,但我想编写一个自动代码,它将自行选择最适合的线并绘制这些线而无需手动处理代码。
-
我尝试计算平均值、标准偏差、最大值,但仍然无法找到解决方案。如果您需要更多说明,请提出问题,我会解释更多。谢谢期待。
-
新添加的图片是带有回归线的差分信号图
-
在代码中,我使用了 up = 0.4 和 low = -up 来绘制这些线,但这是手动方式,我想以自动方式执行此操作,代码检测最佳线并给我滞后的结果。
标签: matlab statistics signals signal-processing regression