代码拉取完成,页面将自动刷新
%% PTplotStats - script to plot flight statistics
% ----------------------------------------------------------------------------------
% "THE BEER-WARE LICENSE" (Revision 42):
% <brian.white@queensu.ca> wrote this file. As long as you retain this notice you
% can do whatever you want with this stuff. If we meet some day, and you think
% this stuff is worth it, you can buy me a beer in return. -Brian White
% ----------------------------------------------------------------------------------
if ~isempty(filenameA) || ~isempty(filenameB)
set(PTstatsfig, 'pointer', 'watch')
pause(.05)
%% update fonts
prop_max_screen=(max([PTstatsfig.Position(3) PTstatsfig.Position(4)]));
fontsz5=round(screensz_multiplier*prop_max_screen);
guiHandlesStats.saveFig5.FontSize=fontsz5;
guiHandlesStats.refresh.FontSize=fontsz5;
guiHandlesStats.degsecStick.FontSize=fontsz5;
guiHandlesStats.crossAxesStats.FontSize=fontsz5;
guiHandlesStats.crossAxesStats_text.FontSize=fontsz5;
guiHandlesStats.crossAxesStats_input.FontSize=fontsz5;
guiHandlesStats.crossAxesStats_text2.FontSize=fontsz5;
guiHandlesStats.crossAxesStats_input2.FontSize=fontsz5;
%% Histograms
if guiHandlesStats.crossAxesStats.Value==1
if ~isempty(filenameA)
if ~updateStats
rcRates=dataA.rates(1,:);
rcExpo=dataA.rates(2,:);
Srates=dataA.rates(3,:);
const=200;
if FirmwareCode_A==INAV, const=1000; end
RateCurveRoll_A=PTrc2deg([0:5:500],dataA.rates(1,1), dataA.rates(2,1), dataA.rates(3,1), const);
RateCurvePitch_A=PTrc2deg([0:5:500],dataA.rates(1,2), dataA.rates(2,2), dataA.rates(3,2), const);
RateCurveYaw_A=PTrc2deg([0:5:500],dataA.rates(1,3), dataA.rates(2,3), dataA.rates(3,3), const);
Yscale=round((max([max(RateCurveRoll_A) max(RateCurvePitch_A) max(RateCurveYaw_A)])) / 50) * 50;
if guiHandlesStats.degsecStick.Value==1,
RateCurveRoll_A=(diff(RateCurveRoll_A));
RateCurvePitch_A=(diff(RateCurvePitch_A));
RateCurveYaw_A=(diff(RateCurveYaw_A));
Yscale=round(max([max(RateCurveRoll_A) max(RateCurvePitch_A) max(RateCurveYaw_A)]));
end
Rpercent_A=PTPercent(DATtmpA.RCcommand(1,:));
Ppercent_A=PTPercent(DATtmpA.RCcommand(2,:));
Ypercent_A=PTPercent(DATtmpA.RCcommand(3,:));
Tpercent_A=DATtmpA.RCRate(4,:); % already computed for throttle
end
hhist=subplot('position',posInfo.statsPos(1,:));
cla
h=histogram(Rpercent_A,'Normalization','probability','BinWidth',1);
y=xlabel('% roll','fontweight','bold');
set(y,'Units','normalized', 'position', [.5 -.1 1],'color',[.2 .2 .2]);
ylabel('% of flight','fontweight','bold')
set(h,'FaceColor',[colorA],'FaceAlpha',.9, 'edgecolor',[colorA],'EdgeAlpha',.7)
hold on
[ax,h1,h2]=plotyy(0,0,[1:length(RateCurveRoll_A)-1],RateCurveRoll_A(1,2:end));
set(ax(1),'Ycolor',[colorA])
set(ax(2),'Xlim',[1 100],'YLim',[0 Yscale] ,'ytick',[0 round(Yscale/2) Yscale], 'Ycolor','k','fontsize',fontsz5)
ax(2).YLabel.String='deg/s';
if guiHandlesStats.degsecStick.Value==1,
ax(2).YLabel.String='deg/s/stick travel units';
end
set(h2,'color',[.5 .5 .5],'LineWidth',1.5)
hold(ax(2),'on'); h=plot([20 40 60 80],[RateCurveRoll_A(20) RateCurveRoll_A(40) RateCurveRoll_A(60) RateCurveRoll_A(80)],'ko','Parent', ax(2));
set(h,'markerfacecolor','k')
set(hhist,'tickdir','in','xlim',[1 100],'xtick',[1 20 40 60 80 100],'ylim',[0 .1],'ytick',[0 .05 .1],'xticklabels',{0 20 40 60 80 100},'yticklabels',{0 5 10},'fontsize',fontsz5, 'Position',[posInfo.statsPos(1,:)]);
axis([1 100 0 .1])
text(21, RateCurveRoll_A(20),[int2str(RateCurveRoll_A(20)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(41, RateCurveRoll_A(40),[int2str(RateCurveRoll_A(40)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(61, RateCurveRoll_A(60),[int2str(RateCurveRoll_A(60)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(81, RateCurveRoll_A(80),[int2str(RateCurveRoll_A(80)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(2, .095,['rates: ' num2str(rcRates(1))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .085,['expo: ' num2str(rcExpo(1))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .075,['super: ' num2str(Srates(1))],'Parent', ax(1),'fontsize',fontsz5);
axis([1 100 0 .1])
grid on
hhist=subplot('position',posInfo.statsPos(2,:));
cla
h=histogram(Ppercent_A,'Normalization','probability','BinWidth',1);
set(h,'FaceColor',[colorA],'FaceAlpha',.9, 'edgecolor',[colorA],'EdgeAlpha',.7)
y=xlabel('% pitch','fontweight','bold');
set(y,'Units','normalized', 'position', [.5 -.1 1],'color',[.2 .2 .2]);
ylabel('% of flight','fontweight','bold')
hold on
[ax,h1,h2]=plotyy(0,0,[1:length(RateCurvePitch_A)-1],RateCurvePitch_A(1,2:end));
set(ax(1),'Ycolor',[colorA])
set(ax(2),'Xlim',[1 100],'YLim',[0 Yscale] ,'ytick',[0 round(Yscale/2) Yscale], 'Ycolor','k','fontsize',fontsz5)
ax(2).YLabel.String='deg/s';
if guiHandlesStats.degsecStick.Value==1,
ax(2).YLabel.String='deg/s/stick travel units';
end
set(h2,'color',[.5 .5 .5],'LineWidth',1.5)
hold(ax(2),'on'); h=plot([20 40 60 80],[RateCurvePitch_A(20) RateCurvePitch_A(40) RateCurvePitch_A(60) RateCurvePitch_A(80)],'ko','Parent', ax(2));
set(h,'markerfacecolor','k')
set(hhist,'tickdir','in','xlim',[1 100],'xtick',[1 20 40 60 80 100],'ylim',[0 .1],'ytick',[0 .05 .1],'xticklabels',{0 20 40 60 80 100},'yticklabels',{0 5 10},'fontsize',fontsz5, 'Position',[posInfo.statsPos(2,:)]);
axis([1 100 0 .1])
text(21, RateCurvePitch_A(20),[int2str(RateCurvePitch_A(20)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(41, RateCurvePitch_A(40),[int2str(RateCurvePitch_A(40)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(61, RateCurvePitch_A(60),[int2str(RateCurvePitch_A(60)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(81, RateCurvePitch_A(80),[int2str(RateCurvePitch_A(80)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(2, .095,['rates: ' num2str(rcRates(2))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .085,['expo: ' num2str(rcExpo(2))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .075,['super: ' num2str(Srates(2))],'Parent', ax(1),'fontsize',fontsz5);
axis([1 100 0 .1])
grid on
hhist=subplot('position',posInfo.statsPos(3,:));
cla
h=histogram(Ypercent_A,'Normalization','probability','BinWidth',1);
set(h,'FaceColor',[colorA],'FaceAlpha',.9, 'edgecolor',[colorA],'EdgeAlpha',.7)
y=xlabel('% yaw','fontweight','bold');
set(y,'Units','normalized', 'position', [.5 -.1 1],'color',[.2 .2 .2]);
ylabel('% of flight','fontweight','bold')
hold on
[ax,h1,h2]=plotyy(0,0,[1:length(RateCurveYaw_A)-1],RateCurveYaw_A(1,2:end));
set(ax(1),'Ycolor',[colorA])
set(ax(2),'Xlim',[1 100],'YLim',[0 Yscale] ,'ytick',[0 round(Yscale/2) Yscale], 'Ycolor','k','fontsize',fontsz5)
ax(2).YLabel.String='deg/s';
if guiHandlesStats.degsecStick.Value==1,
ax(2).YLabel.String='deg/s/stick travel units';
end
set(h2,'color',[.5 .5 .5],'LineWidth',1.5)
hold(ax(2),'on'); h=plot([20 40 60 80],[RateCurveYaw_A(20) RateCurveYaw_A(40) RateCurveYaw_A(60) RateCurveYaw_A(80)],'ko','Parent', ax(2));
set(h,'markerfacecolor','k')
set(hhist,'tickdir','in','xlim',[1 100],'xtick',[1 20 40 60 80 100],'ylim',[0 .1],'ytick',[0 .05 .1],'xticklabels',{0 20 40 60 80 100},'yticklabels',{0 5 10},'fontsize',fontsz5, 'Position',[posInfo.statsPos(3,:)]);
axis([1 100 0 .1])
text(21, RateCurveYaw_A(20),[int2str(RateCurveYaw_A(20)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(41, RateCurveYaw_A(40),[int2str(RateCurveYaw_A(40)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(61, RateCurveYaw_A(60),[int2str(RateCurveYaw_A(60)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(81, RateCurveYaw_A(80),[int2str(RateCurveYaw_A(80)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(2, .095,['rates: ' num2str(rcRates(3))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .085,['expo: ' num2str(rcExpo(3))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .075,['super: ' num2str(Srates(3))],'Parent', ax(1),'fontsize',fontsz5);
axis([1 100 0 .1])
grid on
hhist=subplot('position',posInfo.statsPos(4,:));
cla
h=histogram(Tpercent_A,'Normalization','probability','BinWidth',1);
set(h,'FaceColor',[colorA],'FaceAlpha',.9, 'edgecolor',[colorA],'EdgeAlpha',.7);
grid on
y=xlabel('% throttle','fontweight','bold');
set(y,'Units','normalized', 'position', [.5 -.1 1],'color',[.2 .2 .2]);
ylabel('% of flight', 'color',[colorA],'fontweight','bold')
set(hhist,'ycolor',[colorA],'tickdir','in','xlim',[1 100],'xtick',[1 20 40 60 80 100],'ylim',[0 .1],'ytick',[0 .05 .1],'xticklabels',{0 20 40 60 80 100},'yticklabels',{0 5 10},'fontsize',fontsz5, 'Position',[posInfo.statsPos(4,:)]);
axis([1 100 0 .1])
end
if ~isempty(filenameB)
if ~updateStats
rcRates=dataB.rates(1,:);
rcExpo=dataB.rates(2,:);
Srates=dataB.rates(3,:);
const=200;
if FirmwareCode_B==INAV, const=1000; end
RateCurveRoll_B=PTrc2deg([0:5:500],dataB.rates(1,1), dataB.rates(2,1), dataB.rates(3,1), const);
RateCurvePitch_B=PTrc2deg([0:5:500],dataB.rates(1,2), dataB.rates(2,2), dataB.rates(3,2), const);
RateCurveYaw_B=PTrc2deg([0:5:500],dataB.rates(1,3), dataB.rates(2,3), dataB.rates(3,3), const);
Yscale=round((max([max(RateCurveRoll_B) max(RateCurvePitch_B) max(RateCurveYaw_B)])) / 50) * 50;
if guiHandlesStats.degsecStick.Value==1,
RateCurveRoll_B=(diff(RateCurveRoll_B));
RateCurvePitch_B=(diff(RateCurvePitch_B));
RateCurveYaw_B=(diff(RateCurveYaw_B));
Yscale=round(max([max(RateCurveRoll_B) max(RateCurvePitch_B) max(RateCurveYaw_B)]));
end
Rpercent_B=PTPercent(DATtmpB.RCcommand(1,:));
Ppercent_B=PTPercent(DATtmpB.RCcommand(2,:));
Ypercent_B=PTPercent(DATtmpB.RCcommand(3,:));
Tpercent_B=DATtmpB.RCRate(4,:); % already computed for throttle
end
hhist=subplot('position',posInfo.statsPos(5,:));
cla
h=histogram(Rpercent_B,'Normalization','probability','BinWidth',1);
y=xlabel('% roll','fontweight','bold');
set(y,'Units','normalized', 'position', [.5 -.1 1],'color',[.2 .2 .2]);
ylabel('% of flight','fontweight','bold')
set(h,'FaceColor',[colorB],'FaceAlpha',.9, 'edgecolor',[colorB],'EdgeAlpha',.7)
hold on
[ax,h1,h2]=plotyy(0,0,[1:length(RateCurveRoll_B)-1],RateCurveRoll_B(1,2:end));
set(ax(1),'Ycolor',[colorB])
set(ax(2),'Xlim',[1 100],'YLim',[0 Yscale] ,'ytick',[0 round(Yscale/2) Yscale], 'Ycolor','k','fontsize',fontsz5)
ax(2).YLabel.String='deg/s';
if guiHandlesStats.degsecStick.Value==1,
ax(2).YLabel.String='deg/s/stick travel units';
end
set(h2,'color',[.5 .5 .5],'LineWidth',1.5)
hold(ax(2),'on'); h=plot([20 40 60 80],[RateCurveRoll_B(20) RateCurveRoll_B(40) RateCurveRoll_B(60) RateCurveRoll_B(80)],'ko','Parent', ax(2));
set(h,'markerfacecolor','k')
set(hhist,'tickdir','in','xlim',[1 100],'xtick',[1 20 40 60 80 100],'ylim',[0 .1],'ytick',[0 .05 .1],'xticklabels',{0 20 40 60 80 100},'yticklabels',{0 5 10},'fontsize',fontsz5, 'Position',[posInfo.statsPos(5,:)]);
axis([1 100 0 .1])
text(21, RateCurveRoll_B(20),[int2str(RateCurveRoll_B(20)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(41, RateCurveRoll_B(40),[int2str(RateCurveRoll_B(40)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(61, RateCurveRoll_B(60),[int2str(RateCurveRoll_B(60)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(81, RateCurveRoll_B(80),[int2str(RateCurveRoll_B(80)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(2, .095,['rates: ' num2str(rcRates(1))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .085,['expo: ' num2str(rcExpo(1))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .075,['super: ' num2str(Srates(1))],'Parent', ax(1),'fontsize',fontsz5);
axis([1 100 0 .1])
grid on
hhist=subplot('position',posInfo.statsPos(6,:));
cla
h=histogram(Ppercent_B,'Normalization','probability','BinWidth',1);
set(h,'FaceColor',[colorB],'FaceAlpha',.9, 'edgecolor',[colorB],'EdgeAlpha',.7)
y=xlabel('% pitch','fontweight','bold');
set(y,'Units','normalized', 'position', [.5 -.1 1],'color',[.2 .2 .2]);
ylabel('% of flight','fontweight','bold');
hold on
[ax,h1,h2]=plotyy(0,0,[1:length(RateCurvePitch_B)-1],RateCurvePitch_B(1,2:end));
set(ax(1),'Ycolor',[colorB])
set(ax(2),'Xlim',[1 100],'YLim',[0 Yscale] ,'ytick',[0 round(Yscale/2) Yscale], 'Ycolor','k','fontsize',fontsz5)
ax(2).YLabel.String='deg/s';
if guiHandlesStats.degsecStick.Value==1,
ax(2).YLabel.String='deg/s/stick travel units';
end
set(h2,'color',[.5 .5 .5],'LineWidth',1.5)
hold(ax(2),'on'); h=plot([20 40 60 80],[RateCurvePitch_B(20) RateCurvePitch_B(40) RateCurvePitch_B(60) RateCurvePitch_B(80)],'ko','Parent', ax(2));
set(h,'markerfacecolor','k')
set(hhist,'tickdir','in','xlim',[1 100],'xtick',[1 20 40 60 80 100],'ylim',[0 .1],'ytick',[0 .05 .1],'xticklabels',{0 20 40 60 80 100},'yticklabels',{0 5 10},'fontsize',fontsz5, 'Position',[posInfo.statsPos(6,:)]);
axis([1 100 0 .1])
text(21, RateCurvePitch_B(20),[int2str(RateCurvePitch_B(20)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(41, RateCurvePitch_B(40),[int2str(RateCurvePitch_B(40)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(61, RateCurvePitch_B(60),[int2str(RateCurvePitch_B(60)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(81, RateCurvePitch_B(80),[int2str(RateCurvePitch_B(80)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(2, .095,['rates: ' num2str(rcRates(2))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .085,['expo: ' num2str(rcExpo(2))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .075,['super: ' num2str(Srates(2))],'Parent', ax(1),'fontsize',fontsz5);
axis([1 100 0 .1])
grid on
hhist=subplot('position',posInfo.statsPos(7,:));
cla
h=histogram(Ypercent_B,'Normalization','probability','BinWidth',1);
set(h,'FaceColor',[colorB],'FaceAlpha',.9, 'edgecolor',[colorB],'EdgeAlpha',.7)
y=xlabel('% yaw','fontweight','bold');
set(y,'Units','normalized', 'position', [.5 -.1 1],'color',[.2 .2 .2]);
ylabel('% of flight','fontweight','bold')
hold on
[ax,h1,h2]=plotyy(0,0,[1:length(RateCurveYaw_B)-1],RateCurveYaw_B(1,2:end));
set(ax(1),'Ycolor',[colorB])
set(ax(2),'Xlim',[1 100],'YLim',[0 Yscale] ,'ytick',[0 round(Yscale/2) Yscale], 'Ycolor','k','fontsize',fontsz5)
ax(2).YLabel.String='deg/s';
if guiHandlesStats.degsecStick.Value==1,
ax(2).YLabel.String='deg/s/stick travel units';
end
set(h2,'color',[.5 .5 .5],'LineWidth',1.5)
hold(ax(2),'on'); h=plot([20 40 60 80],[RateCurveYaw_B(20) RateCurveYaw_B(40) RateCurveYaw_B(60) RateCurveYaw_B(80)],'ko','Parent', ax(2));
set(h,'markerfacecolor','k')
set(hhist,'tickdir','in','xlim',[1 100],'xtick',[1 20 40 60 80 100],'ylim',[0 .1],'ytick',[0 .05 .1],'xticklabels',{0 20 40 60 80 100},'yticklabels',{0 5 10},'fontsize',fontsz5, 'Position',[posInfo.statsPos(7,:)]);
axis([1 100 0 .1])
text(21, RateCurveYaw_B(20),[int2str(RateCurveYaw_B(20)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(41, RateCurveYaw_B(40),[int2str(RateCurveYaw_B(40)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(61, RateCurveYaw_B(60),[int2str(RateCurveYaw_B(60)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(81, RateCurveYaw_B(80),[int2str(RateCurveYaw_B(80)) 'deg/s'],'Parent', ax(2),'fontsize',fontsz5);
text(2, .095,['rates: ' num2str(rcRates(3))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .085,['expo: ' num2str(rcExpo(3))],'Parent', ax(1),'fontsize',fontsz5);
text(2, .075,['super: ' num2str(Srates(3))],'Parent', ax(1),'fontsize',fontsz5);
axis([1 100 0 .1])
grid on
hhist=subplot('position',posInfo.statsPos(8,:));
cla
h=histogram(Tpercent_B,'Normalization','probability','BinWidth',1);
set(h,'FaceColor',[colorB],'FaceAlpha',.9, 'edgecolor',[colorB],'EdgeAlpha',.7)
grid on
y=xlabel('% throttle','fontweight','bold');
set(y,'Units','normalized', 'position', [.5 -.1 1],'color',[.2 .2 .2]);
ylabel('% of flight', 'color',[colorB],'fontweight','bold')
set(hhist,'ycolor',[colorB],'tickdir','in','xlim',[1 100],'xtick',[1 20 40 60 80 100],'ylim',[0 .1],'ytick',[0 .05 .1],'xticklabels',{0 20 40 60 80 100},'yticklabels',{0 5 10},'fontsize',fontsz5, 'Position',[posInfo.statsPos(8,:)]);
axis([1 100 0 .1])
end
end
%% means/standard deviations
if guiHandlesStats.crossAxesStats.Value==2
cols=[0.06 0.3 0.54 0.78];
rows=[0.76 0.53 0.3 0.08];
k=0;
for c=1:length(cols)
for r=1:length(rows)
k=k+1;
posInfo.statsPos2(k,:)=[cols(c) rows(r) 0.18 0.16];
end
end
lineThickness=2;
if ~isempty(filenameA)
Rpercent_A=DATtmpA.RCcommand(1,:)/5;
Ppercent_A=DATtmpA.RCcommand(2,:)/5;
Ypercent_A=DATtmpA.RCcommand(3,:)/5;
Tpercent_A=DATtmpA.RCRate(4,:);
N=length(DATtmpA.GyroFilt(1,:));
% gyro
h1=subplot('position',posInfo.statsPos2(1,:)); cla
s1=errorbar([1],mean(abs(DATtmpA.GyroFilt(1,:))), std(abs(DATtmpA.GyroFilt(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpA.GyroFilt(1,:))));hold on
set(s1,'FaceColor',[colorA]);%[ColorSet(11,:)])
s1=errorbar([2],mean(abs(DATtmpA.GyroFilt(2,:))), std(abs(DATtmpA.GyroFilt(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpA.GyroFilt(2,:))));
set(s2,'FaceColor',[colorA]);%,[ColorSet(12,:)])
s1=errorbar([3],mean(abs(DATtmpA.GyroFilt(1,:))), std(abs(DATtmpA.GyroFilt(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpA.GyroFilt(1,:))));
set(s3,'FaceColor',[colorA]);%,[ColorSet(13,:)])
set(gca,'Xtick',[1 2 3],'xticklabel',{'R';'P';'Y'},'xcolor',[colorA],'ycolor',[colorA],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Gyro| [A]','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ymax=ceil(max(mean(abs(DATtmpA.GyroFilt),2))+max((std(abs(DATtmpA.GyroFilt)')')));
axis([.5 3.5 0 ymax])
box off
% RCRate
h1=subplot('position',posInfo.statsPos2(5,:)); cla
s1=errorbar([1],mean(abs(Rpercent_A)), std(abs(Rpercent_A)));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(Rpercent_A)));hold on
set(s1,'FaceColor',[colorA]);%
s1=errorbar([2],mean(abs(Ppercent_A)), std(abs(Ppercent_A)));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(Ppercent_A)));
set(s2,'FaceColor',[colorA]);%
s1=errorbar([3],mean(abs(Ypercent_A)), std(abs(Ypercent_A)));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(Ypercent_A)));
set(s3,'FaceColor',[colorA]);%
s1=errorbar([4],mean(abs(Tpercent_A)), std(abs(Tpercent_A)));hold on
set(s1,'color','k','linewidth',lineThickness)
s4=bar([4],mean(Tpercent_A));
set(s4,'FaceColor',[colorA]);%
set(gca,'Xtick',[1 2 3 4],'xticklabel',{'R';'P';'Y';'T'},'xcolor',[colorA],'ycolor',[colorA],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('% RPYT [A]','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ylabel('Mean % +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
axis([0.5 4.5 0 100])
box off
% pterm
h1=subplot('position',posInfo.statsPos2(2,:)); cla
s1=errorbar([1],mean(abs(DATtmpA.Pterm(1,:))), std(abs(DATtmpA.Pterm(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpA.Pterm(1,:))));hold on
set(s1,'FaceColor',[colorA]);%
s1=errorbar([2],mean(abs(DATtmpA.Pterm(2,:))), std(abs(DATtmpA.Pterm(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpA.Pterm(2,:))));
set(s2,'FaceColor',[colorA]);%
s1=errorbar([3],mean(abs(DATtmpA.Pterm(3,:))), std(abs(DATtmpA.Pterm(3,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpA.Pterm(3,:))));
set(s3,'FaceColor',[colorA]);%
set(gca,'Xtick',[1 2 3],'xticklabel',{'R';'P';'Y'},'xcolor',[colorA],'ycolor',[colorA],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Pterm| [A]','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ymax=ceil(max(mean(abs(DATtmpA.Pterm),2))+max((std(abs(DATtmpA.Pterm)')')));
axis([.5 3.5 0 ymax])
box off
% fterm
h1=subplot('position',posInfo.statsPos2(6,:)); cla
s1=errorbar([1],mean(abs(DATtmpA.Fterm(1,:))), std(abs(DATtmpA.Fterm(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpA.Fterm(1,:))));hold on
set(s1,'FaceColor',[colorA]);%
s1=errorbar([2],mean(abs(DATtmpA.Fterm(2,:))), std(abs(DATtmpA.Fterm(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpA.Fterm(2,:))));
set(s2,'FaceColor',[colorA]);% %
s1=errorbar([3],mean(abs(DATtmpA.Fterm(3,:))), std(abs(DATtmpA.Fterm(3,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpA.Fterm(3,:))));
set(s3,'FaceColor',[colorA]);
set(gca,'Xtick',[1 2 3],'xticklabel',{'R';'P';'Y'},'xcolor',[colorA],'ycolor',[colorA],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Fterm| [A]','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ymax=ceil(max(mean(abs(DATtmpA.Fterm),2))+max((std(abs(DATtmpA.Fterm)')')));
if ymax<1, ymax=10, end
axis([.5 3.5 0 ymax])
box off
% Iterm
h1=subplot('position',posInfo.statsPos2(3,:)); cla
s1=errorbar([1],mean(abs(DATtmpA.Iterm(1,:))), std(abs(DATtmpA.Iterm(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpA.Iterm(1,:))));hold on
set(s1,'FaceColor',[colorA]);%
s1=errorbar([2],mean(abs(DATtmpA.Iterm(2,:))), std(abs(DATtmpA.Iterm(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpA.Iterm(2,:))));
set(s2,'FaceColor',[colorA]);%
s1=errorbar([3],mean(abs(DATtmpA.Iterm(3,:))), std(abs(DATtmpA.Iterm(3,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpA.Iterm(3,:))));
set(s3,'FaceColor',[colorA]);%
set(gca,'Xtick',[1 2 3],'xticklabel',{'R';'P';'Y'},'xcolor',[colorA],'ycolor',[colorA],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Iterm| [A]','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ymax=ceil(max(mean(abs(DATtmpA.Iterm),2))+max((std(abs(DATtmpA.Iterm)')')));
axis([.5 3.5 0 ymax])
box off
% dterm
h1=subplot('position',posInfo.statsPos2(7,:)); cla
s1=errorbar([1],mean(abs(DATtmpA.DtermFilt(1,:))), std(abs(DATtmpA.DtermFilt(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpA.DtermFilt(1,:))));hold on
set(s1,'FaceColor',[colorA]);%
s1=errorbar([2],mean(abs(DATtmpA.DtermFilt(2,:))), std(abs(DATtmpA.DtermFilt(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpA.DtermFilt(2,:))));
set(s2,'FaceColor',[colorA]);%
set(gca,'Xtick',[1 2],'xticklabel',{'R';'P'},'xcolor',[colorA],'ycolor',[colorA],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Dterm| [A]','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ymax=ceil(max(mean(abs(DATtmpA.DtermFilt),2))+max((std(abs(DATtmpA.DtermFilt)')')));
axis([.5 2.5 0 ymax])
box off
h1=subplot('position',posInfo.statsPos2(4,:)); cla
s1=errorbar([1],mean(DATtmpA.Motor12(1,:)), std(DATtmpA.Motor12(1,:)));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(DATtmpA.Motor12(1,:)));hold on
set(s1,'FaceColor',[colorA]);
s1=errorbar([2],mean(DATtmpA.Motor12(2,:)), std(DATtmpA.Motor12(2,:)));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(DATtmpA.Motor12(2,:)));
set(s2,'FaceColor',[colorA]);%
s1=errorbar([3],mean(DATtmpA.Motor34(1,:)), std(DATtmpA.Motor34(1,:)));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(DATtmpA.Motor34(1,:)));
set(s3,'FaceColor',[colorA]);%
s1=errorbar([4],mean(DATtmpA.Motor34(2,:)), std(DATtmpA.Motor34(2,:)));hold on
set(s1,'color','k','linewidth',lineThickness)
s4=bar([4],mean(DATtmpA.Motor34(2,:)));
set(s4,'FaceColor',[colorA]);%
set(gca,'Xtick',[1 2 3 4],'xcolor',[colorA],'ycolor',[colorA],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('Motors [A]','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
axis([0.5 4.5 0 100])
box off
h1=subplot('position',posInfo.statsPos2(8,:)); cla
s1=errorbar([1],mean(abs(DATtmpA.debug12(1,:))), std(abs(DATtmpA.debug12(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpA.debug12(1,:))));hold on
set(s1,'FaceColor',[colorA]);%
s1=errorbar([2],mean(abs(DATtmpA.debug12(2,:))), std(abs(DATtmpA.debug12(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpA.debug12(2,:))));
set(s2,'FaceColor',[colorA]);%
s1=errorbar([3],mean(abs(DATtmpA.debug34(1,:))), std(abs(DATtmpA.debug34(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpA.debug34(1,:))));
set(s3,'FaceColor',[colorA]);%
s1=errorbar([4],mean(abs(DATtmpA.debug34(2,:))), std(abs(DATtmpA.debug34(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s4=bar([4],mean(abs(DATtmpA.debug34(2,:))));
set(s4,'FaceColor',[colorA]);%
set(gca,'Xtick',[1 2 3 4],'xcolor',[colorA],'ycolor',[colorA],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Debug| [A]','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorA]);
ymax=ceil(max([max(mean(abs(DATtmpA.debug12),2)) max(mean(abs(DATtmpA.debug34),2))]) + max([max((std(abs(DATtmpA.debug12)')')) max((std(abs(DATtmpA.debug34)')'))]));
axis([.5 4.5 0 ymax])
box off
end
if ~isempty(filenameB)
Rpercent_B=DATtmpB.RCcommand(1,:)/5;
Ppercent_B=DATtmpB.RCcommand(2,:)/5;
Ypercent_B=DATtmpB.RCcommand(3,:)/5;
Tpercent_B=DATtmpB.RCRate(4,:);
N=length(DATtmpB.GyroFilt(1,:));
% gyro
h1=subplot('position',posInfo.statsPos2(9,:)); cla
s1=errorbar([1],mean(abs(DATtmpB.GyroFilt(1,:))), std(abs(DATtmpB.GyroFilt(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpB.GyroFilt(1,:))));hold on
set(s1,'FaceColor',[colorB]);%[ColorSet(11,:)])
s1=errorbar([2],mean(abs(DATtmpB.GyroFilt(2,:))), std(abs(DATtmpB.GyroFilt(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpB.GyroFilt(2,:))));
set(s2,'FaceColor',[colorB]);%,[ColorSet(12,:)])
s1=errorbar([3],mean(abs(DATtmpB.GyroFilt(1,:))), std(abs(DATtmpB.GyroFilt(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpB.GyroFilt(1,:))));
set(s3,'FaceColor',[colorB]);%,[ColorSet(13,:)])
set(gca,'Xtick',[1 2 3],'xticklabel',{'R';'P';'Y'},'xcolor',[colorB],'ycolor',[colorB],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Gyro| [B]','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ymax=ceil(max(mean(abs(DATtmpB.GyroFilt),2))+max((std(abs(DATtmpB.GyroFilt)')')));
axis([.5 3.5 0 ymax])
box off
% RCRate
h1=subplot('position',posInfo.statsPos2(13,:)); cla
s1=errorbar([1],mean(abs(Rpercent_B)), std(abs(Rpercent_B)));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(Rpercent_B)));hold on
set(s1,'FaceColor',[colorB]);%
s1=errorbar([2],mean(abs(Ppercent_B)), std(abs(Ppercent_B)));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(Ppercent_B)));
set(s2,'FaceColor',[colorB]);%
s1=errorbar([3],mean(abs(Ypercent_B)), std(abs(Ypercent_B)));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(Ypercent_B)));
set(s3,'FaceColor',[colorB]);%
s1=errorbar([4],mean(abs(Tpercent_B)), std(abs(Tpercent_B)));hold on
set(s1,'color','k','linewidth',lineThickness)
s4=bar([4],mean(Tpercent_B));
set(s4,'FaceColor',[colorB]);%
set(gca,'Xtick',[1 2 3 4],'xticklabel',{'R';'P';'Y';'T'},'xcolor',[colorB],'ycolor',[colorB],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('% RPYT [B]','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ylabel('Mean % +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
axis([0.5 4.5 0 100])
box off
% pterm
h1=subplot('position',posInfo.statsPos2(10,:)); cla
s1=errorbar([1],mean(abs(DATtmpB.Pterm(1,:))), std(abs(DATtmpB.Pterm(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpB.Pterm(1,:))));hold on
set(s1,'FaceColor',[colorB]);%
s1=errorbar([2],mean(abs(DATtmpB.Pterm(2,:))), std(abs(DATtmpB.Pterm(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpB.Pterm(2,:))));
set(s2,'FaceColor',[colorB]);%
s1=errorbar([3],mean(abs(DATtmpB.Pterm(3,:))), std(abs(DATtmpB.Pterm(3,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpB.Pterm(3,:))));
set(s3,'FaceColor',[colorB]);%
set(gca,'Xtick',[1 2 3],'xticklabel',{'R';'P';'Y'},'xcolor',[colorB],'ycolor',[colorB],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Pterm| [B]','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ymax=ceil(max(mean(abs(DATtmpB.Pterm),2))+max((std(abs(DATtmpB.Pterm)')')));
axis([.5 3.5 0 ymax])
box off
% fterm
h1=subplot('position',posInfo.statsPos2(14,:)); cla
s1=errorbar([1],mean(abs(DATtmpB.Fterm(1,:))), std(abs(DATtmpB.Fterm(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpB.Fterm(1,:))));hold on
set(s1,'FaceColor',[colorB]);%
s1=errorbar([2],mean(abs(DATtmpB.Fterm(2,:))), std(abs(DATtmpB.Fterm(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpB.Fterm(2,:))));
set(s2,'FaceColor',[colorB]);% %
s1=errorbar([3],mean(abs(DATtmpB.Fterm(3,:))), std(abs(DATtmpB.Fterm(3,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpB.Fterm(3,:))));
set(s3,'FaceColor',[colorB]);
set(gca,'Xtick',[1 2 3],'xticklabel',{'R';'P';'Y'},'xcolor',[colorB],'ycolor',[colorB],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Fterm| [B]','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ymax=ceil(max(mean(abs(DATtmpB.Fterm),2))+max((std(abs(DATtmpB.Fterm)')')));
if ymax<1, ymax=10, end
axis([.5 3.5 0 ymax])
box off
% Iterm
h1=subplot('position',posInfo.statsPos2(11,:)); cla
s1=errorbar([1],mean(abs(DATtmpB.Iterm(1,:))), std(abs(DATtmpB.Iterm(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpB.Iterm(1,:))));hold on
set(s1,'FaceColor',[colorB]);%
s1=errorbar([2],mean(abs(DATtmpB.Iterm(2,:))), std(abs(DATtmpB.Iterm(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpB.Iterm(2,:))));
set(s2,'FaceColor',[colorB]);%
s1=errorbar([3],mean(abs(DATtmpB.Iterm(3,:))), std(abs(DATtmpB.Iterm(3,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpB.Iterm(3,:))));
set(s3,'FaceColor',[colorB]);%
set(gca,'Xtick',[1 2 3],'xticklabel',{'R';'P';'Y'},'xcolor',[colorB],'ycolor',[colorB],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Iterm| [B]','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ymax=ceil(max(mean(abs(DATtmpB.Iterm),2))+max((std(abs(DATtmpB.Iterm)')')));
axis([.5 3.5 0 ymax])
box off
% dterm
h1=subplot('position',posInfo.statsPos2(15,:)); cla
s1=errorbar([1],mean(abs(DATtmpB.DtermFilt(1,:))), std(abs(DATtmpB.DtermFilt(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpB.DtermFilt(1,:))));hold on
set(s1,'FaceColor',[colorB]);%
s1=errorbar([2],mean(abs(DATtmpB.DtermFilt(2,:))), std(abs(DATtmpB.DtermFilt(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpB.DtermFilt(2,:))));
set(s2,'FaceColor',[colorB]);%
set(gca,'Xtick',[1 2],'xticklabel',{'R';'P'},'xcolor',[colorB],'ycolor',[colorB],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Dterm| [B]','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ymax=ceil(max(mean(abs(DATtmpB.DtermFilt),2))+max((std(abs(DATtmpB.DtermFilt)')')));
axis([.5 2.5 0 ymax])
box off
h1=subplot('position',posInfo.statsPos2(12,:)); cla
s1=errorbar([1],mean(DATtmpB.Motor12(1,:)), std(DATtmpB.Motor12(1,:)));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(DATtmpB.Motor12(1,:)));hold on
set(s1,'FaceColor',[colorB]);
s1=errorbar([2],mean(DATtmpB.Motor12(2,:)), std(DATtmpB.Motor12(2,:)));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(DATtmpB.Motor12(2,:)));
set(s2,'FaceColor',[colorB]);%
s1=errorbar([3],mean(DATtmpB.Motor34(1,:)), std(DATtmpB.Motor34(1,:)));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(DATtmpB.Motor34(1,:)));
set(s3,'FaceColor',[colorB]);%
s1=errorbar([4],mean(DATtmpB.Motor34(2,:)), std(DATtmpB.Motor34(2,:)));hold on
set(s1,'color','k','linewidth',lineThickness)
s4=bar([4],mean(DATtmpB.Motor34(2,:)));
set(s4,'FaceColor',[colorB]);%
set(gca,'Xtick',[1 2 3 4],'xcolor',[colorB],'ycolor',[colorB],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('Motors [B]','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
axis([0.5 4.5 0 100])
box off
h1=subplot('position',posInfo.statsPos2(16,:)); cla
s1=errorbar([1],mean(abs(DATtmpB.debug12(1,:))), std(abs(DATtmpB.debug12(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s1=bar([1],mean(abs(DATtmpB.debug12(1,:))));hold on
set(s1,'FaceColor',[colorB]);%
s1=errorbar([2],mean(abs(DATtmpB.debug12(2,:))), std(abs(DATtmpB.debug12(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s2=bar([2],mean(abs(DATtmpB.debug12(2,:))));
set(s2,'FaceColor',[colorB]);%
s1=errorbar([3],mean(abs(DATtmpB.debug34(1,:))), std(abs(DATtmpB.debug34(1,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s3=bar([3],mean(abs(DATtmpB.debug34(1,:))));
set(s3,'FaceColor',[colorB]);%
s1=errorbar([4],mean(abs(DATtmpB.debug34(2,:))), std(abs(DATtmpB.debug34(2,:))));hold on
set(s1,'color','k','linewidth',lineThickness)
s4=bar([4],mean(abs(DATtmpB.debug34(2,:))));
set(s4,'FaceColor',[colorB]);%
set(gca,'Xtick',[1 2 3 4],'xcolor',[colorB],'ycolor',[colorB],'YMinorGrid','on')
set(h1,'fontsize',fontsz5);
xlabel('|Debug| [B]','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ylabel('Mean +SD ','fontsize',fontsz5,'fontweight','bold','color',[colorB]);
ymax=ceil(max([max(mean(abs(DATtmpB.debug12),2)) max(mean(abs(DATtmpB.debug34),2))]) + max([max((std(abs(DATtmpB.debug12)')')) max((std(abs(DATtmpB.debug34)')'))]));
axis([.5 4.5 0 ymax])
box off
end
end
%% Mode 1 topography
if guiHandlesStats.crossAxesStats.Value==3
cols=[0.06 0.52];
rows=[0.55 0.08];
k=0;
for c=1:2
for r=1:2
k=k+1;
posInfo.statsPos2(k,:)=[cols(c) rows(r) 0.38 0.4];
end
end
lineThickness=2;
if ~isempty(filenameA)
Rpercent_A=DATtmpA.RCcommand(1,:)/5;
Ppercent_A=DATtmpA.RCcommand(2,:)/5;
Ypercent_A=DATtmpA.RCcommand(3,:)/5;
Tpercent_A=DATtmpA.RCRate(4,:);
Tacceleration_A=[0 (smooth( diff((Tpercent_A)*10)*A_lograte, 50))'];
col=Tacceleration_A;
cmap_crossaxisStat=b2r(-1, 1);
h1=subplot('position',posInfo.statsPos2(1,:)); cla
s1=surface([Ypercent_A;Ypercent_A],[Ppercent_A;Ppercent_A],[Tacceleration_A;Tacceleration_A],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[-100:20:100])
set(h1,'fontsize',fontsz5);
xlabel('% Yaw [A]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Pitch [A]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 -100 100])
set(s1, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[-100 100],':k');
plot([-100 100],[0 0],':k');
h2=subplot('position',posInfo.statsPos2(2,:)); cla
s2=surface([Rpercent_A;Rpercent_A],[Tpercent_A;Tpercent_A],[Tacceleration_A;Tacceleration_A],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h2,'fontsize',fontsz5);
xlabel('% Roll [A]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [A]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s2, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
end
if ~isempty(filenameB)
Rpercent_B=DATtmpB.RCcommand(1,:)/5;
Ppercent_B=DATtmpB.RCcommand(2,:)/5;
Ypercent_B=DATtmpB.RCcommand(3,:)/5;
Tpercent_B=DATtmpB.RCRate(4,:);
Tacceleration_B=[0 (smooth( diff((Tpercent_B)*10)*B_lograte, 50))'];
col=Tacceleration_B;
h3=subplot('position',posInfo.statsPos2(3,:)); cla
s3=surface([Ypercent_B;Ypercent_B],[Ppercent_B;Ppercent_B],[Tacceleration_B;Tacceleration_B],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[-100:20:100])
set(h3,'fontsize',fontsz5);
xlabel('% Yaw [B]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Pitch [B]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 -100 100])
set(s3, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[-100 100],':k');
plot([-100 100],[0 0],':k');
h4=subplot('position',posInfo.statsPos2(4,:)); cla
s4=surface([Rpercent_B;Rpercent_B],[Tpercent_B;Tpercent_B],[Tacceleration_B;Tacceleration_B],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h4,'fontsize',fontsz5);
xlabel('% Roll [B]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [B]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s4, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
end
end
%% Mode 2 topography
if guiHandlesStats.crossAxesStats.Value==4
cols=[0.06 0.52];
rows=[0.55 0.08];
k=0;
for c=1:2
for r=1:2
k=k+1;
posInfo.statsPos2(k,:)=[cols(c) rows(r) 0.38 0.4];
end
end
lineThickness=2;
if ~isempty(filenameA)
Rpercent_A=DATtmpA.RCcommand(1,:)/5;
Ppercent_A=DATtmpA.RCcommand(2,:)/5;
Ypercent_A=DATtmpA.RCcommand(3,:)/5;
Tpercent_A=DATtmpA.RCRate(4,:);
Tacceleration_A=[0 (smooth( diff((Tpercent_A)*10)*A_lograte, 50))'];
col=Tacceleration_A;
cmap_crossaxisStat=b2r(-1, 1);
h1=subplot('position',posInfo.statsPos2(1,:)); cla
s1=surface([Ypercent_A;Ypercent_A],[Tpercent_A;Tpercent_A],[Tacceleration_A;Tacceleration_A],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h1,'fontsize',fontsz5);
xlabel('% Yaw [A]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [A]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s1, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
h2=subplot('position',posInfo.statsPos2(2,:)); cla
s2=surface([Rpercent_A;Rpercent_A],[Ppercent_A;Ppercent_A],[Tacceleration_A;Tacceleration_A],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[-100:20:100])
set(h2,'fontsize',fontsz5);
xlabel('% Roll [A]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Pitch [A]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 -100 100])
set(s2, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[-100 100],':k');
plot([-100 100],[0 0],':k');
end
if ~isempty(filenameB)
Rpercent_B=DATtmpB.RCcommand(1,:)/5;
Ppercent_B=DATtmpB.RCcommand(2,:)/5;
Ypercent_B=DATtmpB.RCcommand(3,:)/5;
Tpercent_B=DATtmpB.RCRate(4,:);
Tacceleration_B=[0 (smooth( diff((Tpercent_B)*10)*B_lograte, 50))'];
col=Tacceleration_B;
h3=subplot('position',posInfo.statsPos2(3,:)); cla
s3=surface([Ypercent_B;Ypercent_B],[Tpercent_B;Tpercent_B],[Tacceleration_B;Tacceleration_B],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h3,'fontsize',fontsz5);
xlabel('% Yaw [B]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [B]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s3, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
h4=subplot('position',posInfo.statsPos2(4,:)); cla
s4=surface([Rpercent_B;Rpercent_B],[Ppercent_B;Ppercent_B],[Tacceleration_B;Tacceleration_B],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[-100:20:100])
set(h4,'fontsize',fontsz5);
xlabel('% Roll [B]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Pitch [B]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 -100 100])
set(s4, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[-100 100],':k');
plot([-100 100],[0 0],':k');
end
end
%% each against throttle
if guiHandlesStats.crossAxesStats.Value==5
cols=[0.06 0.54];
rows=[0.69 0.385 0.08];
k=0;
for c=1:2
for r=1:3
k=k+1;
posInfo.statsPos2(k,:)=[cols(c) rows(r) 0.39 0.24];
end
end
lineThickness=2;
if ~isempty(filenameA)
Rpercent_A=DATtmpA.RCcommand(1,:)/5;
Ppercent_A=DATtmpA.RCcommand(2,:)/5;
Ypercent_A=DATtmpA.RCcommand(3,:)/5;
Tpercent_A=DATtmpA.RCRate(4,:);
Tacceleration_A=[0 (smooth( diff((Tpercent_A)*10)*A_lograte, 50))'];
col=Tacceleration_A;
cmap_crossaxisStat=b2r(-1, 1);
h1=subplot('position',posInfo.statsPos2(1,:)); cla
s1=surface([Rpercent_A;Rpercent_A],[Tpercent_A;Tpercent_A],[Tacceleration_A;Tacceleration_A],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h1,'fontsize',fontsz5);
xlabel('% Roll [A]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [A]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s1, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
h2=subplot('position',posInfo.statsPos2(2,:)); cla
s2=surface([Ppercent_A;Ppercent_A],[Tpercent_A;Tpercent_A],[Tacceleration_A;Tacceleration_A],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h2,'fontsize',fontsz5);
xlabel('% Pitch [A]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [A]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s2, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
h3=subplot('position',posInfo.statsPos2(3,:)); cla
s3=surface([Ypercent_A;Ypercent_A],[Tpercent_A;Tpercent_A],[Tacceleration_A;Tacceleration_A],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h3,'fontsize',fontsz5);
xlabel('% Yaw [A]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [A]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s3, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
end
if ~isempty(filenameB)
Rpercent_B=DATtmpB.RCcommand(1,:)/5;
Ppercent_B=DATtmpB.RCcommand(2,:)/5;
Ypercent_B=DATtmpB.RCcommand(3,:)/5;
Tpercent_B=DATtmpB.RCRate(4,:);
Tacceleration_B=[0 (smooth( diff((Tpercent_B)*10)*B_lograte, 50))'];
col=Tacceleration_B;
h4=subplot('position',posInfo.statsPos2(4,:)); cla
s4=surface([Rpercent_B;Rpercent_B],[Tpercent_B;Tpercent_B],[Tacceleration_B;Tacceleration_B],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h4,'fontsize',fontsz5);
xlabel('% Roll [B]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [B]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s4, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
h5=subplot('position',posInfo.statsPos2(5,:)); cla
s5=surface([Ppercent_B;Ppercent_B],[Tpercent_B;Tpercent_B],[Tacceleration_B;Tacceleration_B],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h5,'fontsize',fontsz5);
xlabel('% Pitch [B]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [B]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s5, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
h6=subplot('position',posInfo.statsPos2(6,:)); cla
s6=surface([Ypercent_B;Ypercent_B],[Tpercent_B;Tpercent_B],[Tacceleration_B;Tacceleration_B],[col;col],'facecol','no','edgecol','interp','linew',lineThickness);
colormap(cmap_crossaxisStat);
set(gca,'CLim',[-zScale zScale],'xtick',[-100:20:100],'ytick',[0:20:100])
set(h6,'fontsize',fontsz5);
xlabel('% Yaw [B]','fontsize',fontsz5,'fontweight','bold');
ylabel('% Throttle [B]','fontsize',fontsz5,'fontweight','bold');
axis([-100 100 0 100])
set(s6, 'EdgeAlpha',zTransparency);
hold on; plot([0 0],[0 100],':k');
plot([-100 100],[50 50],':k');
end
end
updateStats=0;
set(PTstatsfig, 'pointer', 'arrow')
end
function newmap = b2r(cmin_input,cmax_input)
%BLUEWHITERED Blue, white, and red color map.
% this matlab file is designed to draw anomaly figures. the color of
% the colorbar is from blue to white and then to red, corresponding to
% the anomaly values from negative to zero to positive, respectively.
% The color white always correspondes to value zero.
%
% You should input two values like caxis in matlab, that is the min and
% the max value of color values designed. e.g. colormap(b2r(-3,5))
%
% the brightness of blue and red will change according to your setting,
% so that the brightness of the color corresponded to the color of his
% opposite number
% e.g. colormap(b2r(-3,6)) is from light blue to deep red
% e.g. colormap(b2r(-3,3)) is from deep blue to deep red
%
% I'd advise you to use colorbar first to make sure the caxis' cmax and cmin.
% Besides, there is also another similar colorbar named 'darkb2r', in which the
% color is darker.
%
% by Cunjie Zhang, 2011-3-14
% find bugs ====> email : daisy19880411@126.com
% updated: Robert Beckman help to fix the bug when start point is zero, 2015-04-08
%
% Examples:
% ------------------------------
% figure
% peaks;
% colormap(b2r(-6,8)), colorbar, title('b2r')
%
%% check the input
if nargin ~= 2 ;
disp('input error');
disp('input two variables, the range of caxis , for example : colormap(b2r(-3,3))');
end
if cmin_input >= cmax_input
disp('input error');
disp('the color range must be from a smaller one to a larger one');
end
%% control the figure caxis
lims = get(gca, 'CLim'); % get figure caxis formation
caxis([cmin_input cmax_input]);
%% color configuration : from blue to to white then to red
red_top = [1 0 0];
white_middle= [1 1 1];
blue_bottom = [0 0 1];
%% color interpolation
color_num = 251;
color_input = [blue_bottom; white_middle; red_top];
oldsteps = linspace(-1, 1, size(color_input,1));
newsteps = linspace(-1, 1, color_num);
%% Category Discussion according to the cmin and cmax input
% the color data will be remaped to color range from -max(abs(cmin_input),cmax_input)
% to max(abs(cmin_input),cmax_input) , and then squeeze the color data
% in order to make sure the blue and red color selected corresponded
% to their math values
% for example :
% if b2r(-3,6) ,the color range is from light blue to deep red , so that
% the light blue valued at -3 correspondes to light red valued at 3
%% Category Discussion according to the cmin and cmax input
% first : from negative to positive
% then : from positive to positive
% last : from negative to negative
for j=1:3
newmap_all(:,j) = min(max(transpose(interp1(oldsteps, color_input(:,j), newsteps)), 0), 1);
end
if (cmin_input < 0) && (cmax_input > 0) ;
if abs(cmin_input) < cmax_input
% |--------|---------|--------------------|
% -cmax cmin 0 cmax [cmin,cmax]
start_point = max(round((cmin_input+cmax_input)/2/cmax_input*color_num),1);
newmap = squeeze(newmap_all(start_point:color_num,:));
elseif abs(cmin_input) >= cmax_input
% |------------------|------|--------------|
% cmin 0 cmax -cmin [cmin,cmax]
end_point = max(round((cmax_input-cmin_input)/2/abs(cmin_input)*color_num),1);
newmap = squeeze(newmap_all(1:end_point,:));
end
elseif cmin_input >= 0
if lims(1) < 0
disp('caution:')
disp('there are still values smaller than 0, but cmin is larger than 0.')
disp('some area will be in red color while it should be in blue color')
end
% |-----------------|-------|-------------|
% -cmax 0 cmin cmax [cmin,cmax]
start_point = max(round((cmin_input+cmax_input)/2/cmax_input*color_num),1);
newmap = squeeze(newmap_all(start_point:color_num,:));
elseif cmax_input <= 0
if lims(2) > 0
disp('caution:')
disp('there are still values larger than 0, but cmax is smaller than 0.')
disp('some area will be in blue color while it should be in red color')
end
% |------------|------|--------------------|
% cmin cmax 0 -cmin [cmin,cmax]
end_point = max(round((cmax_input-cmin_input)/2/abs(cmin_input)*color_num),1);
newmap = squeeze(newmap_all(1:end_point,:));
end
end
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。