回归技术的MATLAB代码问题
我正在研制方向盘角度传感器,用于测量方向盘的绝对角度。由于转向角传感器使用齿轮和几个完全与硬件相关的接头,因此,尽管由于使用机械部件以及一些环境和道路条件,随着时间的推移开始校准,但传感器的值会出现一些错误(例如偏移、相位变化、信号平坦、延迟) 简言之,由于测量中的这些误差,我们的目标变得分散,这意味着如果我正在查看速度与时间的曲线,那么如果在原始或校准传感器中,简而言之,接近理想状态传感器,我的速度显示振幅峰值,但由于误差(滞后)在测量信号中,我并没有得到速度曲线的峰值,或者我得到了曲线的平坦化,所以这将影响我的最终任务 我对滞后有一个公差,比如说1.20度,这就是为什么我对我的信号有详细的了解,并且想要观察我的信号,如果一些变化意味着我的信号中是否发生了偏移、延迟、降低。这不仅会给我提供一个想法,即是减少用于我的任务的传感器数量,还是对传感器的硬件进行一些更改以减少迟滞量,或者采取一些其他措施来减少迟滞量 我现在所做的一切我不确定我是对还是错。我得到了一些滞后值,但对于我使用的一种技术,我没有什么问题。如果有人告诉我如何改进这项技术或提供更好的方法,那么这将是一个很好的指导 我有一个理想的传感器信号(在我们想要的理想条件下)和1个传感器的值,我有来自汽车的6个不同驱动器的数据。我只解释了我的第一个驱动器的一个示例及其与参考传感器数据的关系 对于传感器的一次读数,给定尺寸为1x1626100和1x1626100的数据参考信号和传感器信号数据,但在所有读数中,理想和测量信号w.r.t到时间的值相同 简而言之,我想找出传感器信号与测量信号之间的滞后差异 在这种方法中,我应用了回归线技术(对差分信号的上下值) 我测量了我的信号差异(Ref–施加信号限制后的信号测量值) 应用回归技术,将我自己设定的阈值置于差值信号的上方和下方,分别表示上限值和下限值,上限值和下限值回归线之间的差值称为滞后(损失)。请查看图3和图4以获得清晰的视图 这项技术的问题在于,我在查看了up=0.4、low=-0.4等数据后,自己定义了上下回归线的值 问题: 有没有可能,我可以写一个程序,由它自己决定最佳的拟合线,而不是给出一个阈值 这意味着我的代码有没有办法为上述值绘制最佳回归线,为较低值绘制最佳回归线,并计算滞后 我仍然无法找到解决这个问题的办法,我将非常感谢你们大家 谢谢你的期待回归技术的MATLAB代码问题,matlab,statistics,signals,signal-processing,regression,Matlab,Statistics,Signals,Signal Processing,Regression,我正在研制方向盘角度传感器,用于测量方向盘的绝对角度。由于转向角传感器使用齿轮和几个完全与硬件相关的接头,因此,尽管由于使用机械部件以及一些环境和道路条件,随着时间的推移开始校准,但传感器的值会出现一些错误(例如偏移、相位变化、信号平坦、延迟) 简言之,由于测量中的这些误差,我们的目标变得分散,这意味着如果我正在查看速度与时间的曲线,那么如果在原始或校准传感器中,简而言之,接近理想状态传感器,我的速度显示振幅峰值,但由于误差(滞后)在测量信号中,我并没有得到速度曲线的峰值,或者我得到了曲线的平坦
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
全部清除
clc
drv(6)=荷载('20170420_u142024.mat');
t=drv(6)。q_T0;
ref=drv(6)位置;
lws_7=drv(6)。转向轮角度;
swav=drv(6)。旋转时转向;
vel=drv(6).KBI_angez_Geschw;
sig_diff=ref-lws_7;
mean_sig_diff=平均值(sig_diff);
偏移量_移除_sig_diff=detrend(sig_diff,'constant');
偏移量(已移除)平均值(信号差=detrend(平均值(信号差),“常数”);
图(1)
ax11=子批次(321);
histfit(信号差异)
dum=['Drive'num2str(i)':驱动器']的偏移量已移除的差异信号;
标题(dum)
等等
绘图([mean_sig_diff mean_sig_diff],[0 10000],'r')
拖延
ax12=子批次(322);
histfit(偏移量已移除信号差异)
dum=['Drive'num2str(i)':偏移量已移除的差分信号'];
标题(dum)
等等
绘图([offset_removed_mean_sig_diff offset_removed_mean_sig_diff],[0 10000],'r')
拖延
swvel_thres=20;
vehvel=60;
SAmax=90;
t_lim=t((lws_7-SAmax)和(swavvehvel));
sig_diff_lim=sig_diff((lws_7-SAmax)和(swavvehvel));
偏移量_rem_sig_diff_lim=detrend(sig_diff_lim,'常数');
mean_sig_diff_lim=平均值(sig_diff_lim);
offsetmean_sig_diff_lim=detrend(mean_sig_diff_lim,'常数');
图(2)
ax21=子批次(321);
histfit(信号差异)
dum=['Drive'num2str(i)':有限差分信号,驱动器']的偏移量已移除;
标题(dum)
等等
绘图([mean_sig_diff_lim mean_sig_diff_lim],[0 10000],'r')
拖延
ax22=子批次(322);
histfit(偏移量、距离、信号、差异)
dum=['Drive'num2str(i)':偏移量移除的有限差分信号'];
标题(dum)
等等
绘图([offsetmean_sig_diff_lim offsetmean_sig_diff_lim],[0 10000],'r')
拖延
up=0.4;
低=-高;
stats_up=regstats(offset_rem_sig_diff_lim((offset_rem_sig_diff_lim>up))、t_lim((offset_rem_sig_diff_lim>up))、‘线性’、{beta}计算上限值的线性回归
截距=stats\u up.beta(1);
斜率=stats\u up.beta(2);
stats_low=regstats(offset_rem_sig_diff_lim)((offset_rem_sig_diff_lim您可以尝试一个1D版本的.k-means将数据集划分为k个集(称为集群)——在您的情况下,k=3(中间点、上点、下点)
[idx,C] = kmeans(___)