diff --git a/season/FT23/plot_settings/sidebar_stats.m b/season/FT23/plot_settings/sidebar_stats.m index 018b9b8..6a9b450 100644 --- a/season/FT23/plot_settings/sidebar_stats.m +++ b/season/FT23/plot_settings/sidebar_stats.m @@ -1,4 +1,4 @@ -function [sidebarLabel] = sidebar_stats(pltData) +function [sidebarLabel] = sidebar_stats(stats) %SIDEBAR_STATS Summary of this function goes here % Detailed explanation goes here sidebarLabel = sprintf(... @@ -9,13 +9,13 @@ function [sidebarLabel] = sidebar_stats(pltData) " Peak (mean): %1.f kW\n" + ... "\nDistance: %.2f km\n" + ... "\nTopspeed: %.1f km/h\n", ... - pltData.energy_used_kwh, ... - pltData.energy_regen_kwh, ... - pltData.energy_kwh, ... - pltData.peakPower_kw, ... - pltData.peakPowerMean_kw, ... - pltData.distanceTotal_km, ... - pltData.maxSpeed_kph ... + stats.energy_used_kwh, ... + stats.energy_regen_kwh, ... + stats.energy_kwh, ... + stats.peakPower_kw, ... + stats.peakPowerMean_kw, ... + stats.distanceTotal_km, ... + stats.maxSpeed_kph ... ); end diff --git a/season/FT23/sortdata.m b/season/FT23/sortdata.m index 22c9bfb..b903462 100644 --- a/season/FT23/sortdata.m +++ b/season/FT23/sortdata.m @@ -5,7 +5,7 @@ function [pltData, stats] = sortdata(data) time_s = time_s - time_s(1); % set beginning of session to 0 % x-Axis: - pltData.time_s = time_s -time_s(1); + pltData.time_s = time_s; pltData.time_hms = time_hms; % distance calculation @@ -14,12 +14,12 @@ function [pltData, stats] = sortdata(data) for i = 2:length(speed_mps) pltData.distance(i) = speed_mps(i)*(time_s(i)-time_s(i-1)) + pltData.distance(i-1); end - pltData.distance = pltData.distance.' + pltData.distance = pltData.distance.'; pltData.xAxis = pltData.time_s; % set time as default x-Axis for plotting %% Misc pltData.app_percent = data.ABX_Driver_ABX_APPS_percent; - pltData.speed_kph = 3.6*movmean(data.ABX_Driver_ABX_Speed,50); % same filter as for distance calculation ??? + pltData.speed_kph = 3.6*movmean(data.ABX_Driver_ABX_Speed,50); % same fi.'lter as for distance calculation ??? pltData.steering_deg = data.ABX_Driver_ABX_Steering_Angle; %% AMS: diff --git a/season/FT24/plot_settings/plot_accumulator.m b/season/FT24/plot_settings/plot_accumulator.m index 3fc63e8..b212c3f 100644 --- a/season/FT24/plot_settings/plot_accumulator.m +++ b/season/FT24/plot_settings/plot_accumulator.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_accumulator(panel, start, stop, pltData) +function [outputArg] = plot_accumulator(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,27 +7,27 @@ function [outputArg] = plot_accumulator(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: power [kW] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Power [kW]") - plot(ax2,pltData.xAxis(start:stop),pltData.ams_ptot(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.ams_ptot(tr,:)) % plot 3: Max Cell Temp [°C] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Max Cell Temp [°C]") - plot(ax3,pltData.xAxis(start:stop),pltData.ams_tmax(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.ams_tmax(tr,:)) % plot 4: State of charge [%] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "SOC") - plot(ax4,pltData.xAxis(start:stop),pltData.ams_soc(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.ams_soc(tr,:)) % link all x axes linkaxes([ax1, ax2, ax3, ax4],"x") diff --git a/season/FT24/plot_settings/plot_brakes.m b/season/FT24/plot_settings/plot_brakes.m index a5f8587..8781464 100644 --- a/season/FT24/plot_settings/plot_brakes.m +++ b/season/FT24/plot_settings/plot_brakes.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_brakes(panel, start, stop, pltData) +function [outputArg] = plot_brakes(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,15 +7,15 @@ function [outputArg] = plot_brakes(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: brake pressure front/rear [bar] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Brake Pressure F/R [bar]") - plot(ax2,pltData.xAxis(start:stop),pltData.brakePFront_bar(start:stop)) - plot(ax2,pltData.xAxis(start:stop),pltData.brakePRear_bar(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.brakePFront_bar(tr,:)) + plot(ax2,pltData.xAxis(tr,:),pltData.brakePRear_bar(tr,:)) legend(ax2, "Front", "Rear") % plot 3: longitudinal acceleration [g] @@ -23,17 +23,17 @@ function [outputArg] = plot_brakes(panel, start, stop, pltData) hold(ax3, "on") grid(ax3, "on") title(ax3, "Long Acc [g]") - plot(ax3,pltData.xAxis(start:stop),pltData.acc_long_g(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.acc_long_g(tr,:)) % plot 4: Brake Temp [°C] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Brake Temp [°C]") - plot(ax4,pltData.xAxis(start:stop),pltData.brakeTFrontLeft_degC(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.brakeTFrontRight_degC(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.brakeTRearLeft_degC(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.brakeTRearRight_degC(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.brakeTFrontLeft_degC(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.brakeTFrontRight_degC(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.brakeTRearLeft_degC(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.brakeTRearRight_degC(tr,:)) legend(ax4, "FL", "FR", "RL", "RR") % plot 5: brake bias [%] @@ -41,7 +41,7 @@ function [outputArg] = plot_brakes(panel, start, stop, pltData) hold(ax5, "on") grid(ax5, "on") title(ax5, "Brake Bias [%]") - plot(ax5,pltData.xAxis(start:stop),pltData.brakeBias_perc(start:stop)) + plot(ax5,pltData.xAxis(tr,:),pltData.brakeBias_perc(tr,:)) % link all x axes linkaxes([ax1, ax2, ax3, ax4, ax5],"x") diff --git a/season/FT24/plot_settings/plot_custom.m b/season/FT24/plot_settings/plot_custom.m index ee8707f..011bb8b 100644 --- a/season/FT24/plot_settings/plot_custom.m +++ b/season/FT24/plot_settings/plot_custom.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_custom(panel, start, stop, pltData) +function [outputArg] = plot_custom(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"flow"); @@ -10,7 +10,7 @@ function [outputArg] = plot_custom(panel, start, stop, pltData) ylabel(ax1, "y-axis label") xlabel(ax1, "x-axis label") %"XXX = enter name of data you want to plot" - plot(ax1,pltData.xAxis(start:stop),pltData.XXX(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.XXX(tr,:)) % more plots for customizing @@ -19,21 +19,21 @@ function [outputArg] = plot_custom(panel, start, stop, pltData) % hold(ax2, "on") % grid(ax2, "on") % title(ax2, "Power [kW]") - % plot(ax2,pltData.xAxis(start:stop),pltData. XXXX (start:stop)) + % plot(ax2,pltData.xAxis(tr,:),pltData. XXXX (tr,:)) % plot 3: % ax3 = nexttile(tl); % hold(ax3, "on") % grid(ax3, "on") % title(ax3, "Max Cell Temp [°C]") - % plot(ax3,pltData.xAxis(start:stop),pltData. XXXX (start:stop)) + % plot(ax3,pltData.xAxis(tr,:),pltData. XXXX (tr,:)) % plot 4: % ax4 = nexttile(tl); % hold(ax4, "on") % grid(ax4, "on") % title(ax4, "SOC") - % plot(ax4,pltData.xAxis(start:stop),pltData. XXXX (start:stop)) + % plot(ax4,pltData.xAxis(tr,:),pltData. XXXX (tr,:)) % link all x axes diff --git a/season/FT24/plot_settings/plot_driver_braking.m b/season/FT24/plot_settings/plot_driver_braking.m index 0648479..3d816a6 100644 --- a/season/FT24/plot_settings/plot_driver_braking.m +++ b/season/FT24/plot_settings/plot_driver_braking.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_driver_braking(panel, start, stop, pltData) +function [outputArg] = plot_driver_braking(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,25 +7,25 @@ function [outputArg] = plot_driver_braking(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: accelerator pedal position [%] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "APP [%]") - plot(ax2,pltData.xAxis(start:stop),pltData.app_percent(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.app_percent(tr,:)) % plot 3: brake pressure front [bar] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Brake Pressure Front [bar]") - plot(ax3,pltData.xAxis(start:stop),pltData.brakePFront_bar(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.brakePFront_bar(tr,:)) % plot 4: longitudinal acceleration [g] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Long Acc [g]") - plot(ax4,pltData.xAxis(start:stop),pltData.acc_long_g(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.acc_long_g(tr,:)) % link all x axes linkaxes([ax1, ax2, ax3, ax4],"x") diff --git a/season/FT24/plot_settings/plot_driver_general.m b/season/FT24/plot_settings/plot_driver_general.m index e33b68c..dfc5e0d 100644 --- a/season/FT24/plot_settings/plot_driver_general.m +++ b/season/FT24/plot_settings/plot_driver_general.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_driver_general(panel, start, stop, pltData) +function [outputArg] = plot_driver_general(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,25 +7,25 @@ function [outputArg] = plot_driver_general(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: accelerator pedal position [%] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "APP [%]") - plot(ax2,pltData.xAxis(start:stop),pltData.app_percent(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.app_percent(tr,:)) % plot 3: brake pressure front [bar] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Brake Pressure Front [bar]") - plot(ax3,pltData.xAxis(start:stop),pltData.brakePFront_bar(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.brakePFront_bar(tr,:)) % plot 4: steering angle [°] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Steering Angle [°]") - plot(ax4,pltData.xAxis(start:stop),pltData.steering_deg(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.steering_deg(tr,:)) % link all x axes linkaxes([ax1, ax2, ax3, ax4],"x") diff --git a/season/FT24/plot_settings/plot_driver_statistics.m b/season/FT24/plot_settings/plot_driver_statistics.m index a72408e..6dfd0a3 100644 --- a/season/FT24/plot_settings/plot_driver_statistics.m +++ b/season/FT24/plot_settings/plot_driver_statistics.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_driver_statistics(panel, start, stop, pltData) +function [outputArg] = plot_driver_statistics(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,13 +7,13 @@ function [outputArg] = plot_driver_statistics(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: accelerator pedal position [%] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "APP [%]") - plot(ax2,pltData.xAxis(start:stop),pltData.app_percent(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.app_percent(tr,:)) linkaxes([ax1, ax2],"x") % plot 3: accelerator pedal position histogram ax3 = nexttile(tl); @@ -22,7 +22,7 @@ function [outputArg] = plot_driver_statistics(panel, start, stop, pltData) title(ax3, "APP distribution") ylabel(ax3, "\sigma [%]") xlabel(ax3, "APP [%]") - histogram(ax3,pltData.app_percent(start:stop),"Normalization","percentage") + histogram(ax3,pltData.app_percent(tr,:),"Normalization","percentage") % plot 4: brake pressure histogram ax4 = nexttile(tl); hold(ax4, "on") @@ -30,7 +30,7 @@ function [outputArg] = plot_driver_statistics(panel, start, stop, pltData) title(ax4, "BrakeP distribution") ylabel(ax4, "\sigma [%]") xlabel(ax4, "Brake Pressure Front [bar]") - histogram(ax4,pltData.brakePFront_bar(start:stop),"Normalization","percentage") + histogram(ax4,pltData.brakePFront_bar(tr,:),"Normalization","percentage") % return null (not relevant for plots!) outputArg = []; diff --git a/season/FT24/plot_settings/plot_driver_steering.m b/season/FT24/plot_settings/plot_driver_steering.m index dc1eb6f..07633de 100644 --- a/season/FT24/plot_settings/plot_driver_steering.m +++ b/season/FT24/plot_settings/plot_driver_steering.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_driver_steering(panel, start, stop, pltData) +function [outputArg] = plot_driver_steering(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,13 +7,13 @@ function [outputArg] = plot_driver_steering(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: steering angle [°] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Steering Angle [°]") - plot(ax2,pltData.xAxis(start:stop),pltData.steering_deg(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.steering_deg(tr,:)) % plot 3: oversteer ax3 = nexttile(tl); hold(ax3, "on") @@ -26,9 +26,9 @@ function [outputArg] = plot_driver_steering(panel, start, stop, pltData) hold(ax4, "on") grid(ax4, "on") title(ax4, "Lateral Acc [g]") - plot(ax4,pltData.xAxis(start:stop),pltData.acc_lat_g)(start:stop) + plot(ax4,pltData.xAxis(tr,:),pltData.acc_lat_g(tr,:)) % link all x axes - linkaxes([ax1, ax2, ax3, ax4],"x") + %linkaxes([ax1, ax2, ax3, ax4],"x") % return null (not relevant for plots!) outputArg = []; diff --git a/season/FT24/plot_settings/plot_inverter.m b/season/FT24/plot_settings/plot_inverter.m index 6d57e10..eba215d 100644 --- a/season/FT24/plot_settings/plot_inverter.m +++ b/season/FT24/plot_settings/plot_inverter.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_inverter(panel, start, stop, pltData) +function [outputArg] = plot_inverter(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,38 +7,38 @@ function [outputArg] = plot_inverter(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: Inverter Temps [°C] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Inverter Temp [°C]") - plot(ax2,pltData.xAxis(start:stop),pltData.invL_temp(start:stop)) - plot(ax2,pltData.xAxis(start:stop),pltData.invR_temp(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.invL_temp(tr,:)) + plot(ax2,pltData.xAxis(tr,:),pltData.invR_temp(tr,:)) legend(ax2, "Left", "Right") % plot 3: Torque request / actual inverter left ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Left Torque") - plot(ax3,pltData.xAxis(start:stop),pltData.invL_torqueDemand(start:stop)) - plot(ax3,pltData.xAxis(start:stop),pltData.invL_torqueActual(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.invL_torqueDemand(tr,:)) + plot(ax3,pltData.xAxis(tr,:),pltData.invL_torqueActual(tr,:)) legend(ax3, "Demand", "Actual") % plot 4: Torque request / actual inverter right ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Right Torque") - plot(ax4,pltData.xAxis(start:stop),pltData.invR_torqueDemand(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.invR_torqueActual(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.invR_torqueDemand(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.invR_torqueActual(tr,:)) legend(ax4, "Demand", "Actual") % plot 5: Motor velocities ax5 = nexttile(tl); hold(ax5, "on") grid(ax5, "on") title(ax5, "Motor Velocities [1/min]") - plot(ax5,pltData.xAxis(start:stop),pltData.motL_vel_rpm(start:stop)) - plot(ax5,pltData.xAxis(start:stop),pltData.motR_vel_rpm(start:stop)) + plot(ax5,pltData.xAxis(tr,:),pltData.motL_vel_rpm(tr,:)) + plot(ax5,pltData.xAxis(tr,:),pltData.motR_vel_rpm(tr,:)) legend(ax5, "Left", "Right") % link all x axes diff --git a/season/FT24/plot_settings/plot_powertrain.m b/season/FT24/plot_settings/plot_powertrain.m index d5199f6..ccbac2c 100644 --- a/season/FT24/plot_settings/plot_powertrain.m +++ b/season/FT24/plot_settings/plot_powertrain.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_powertrain(panel, start, stop, pltData) +function [outputArg] = plot_powertrain(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,36 +7,36 @@ function [outputArg] = plot_powertrain(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: power [kW] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Power [kW]") - plot(ax2,pltData.xAxis(start:stop),pltData.ams_ptot(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.ams_ptot(tr,:)) % plot 3: Inverter Temps [°C] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Inverter Temp [°C]") - plot(ax3,pltData.xAxis(start:stop),pltData.invL_temp(start:stop)) - plot(ax3,pltData.xAxis(start:stop),pltData.invR_temp(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.invL_temp(tr,:)) + plot(ax3,pltData.xAxis(tr,:),pltData.invR_temp(tr,:)) legend(ax3, "Left", "Right") % plot 4: Motor Temps ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Motor Temp [°C]") - plot(ax4,pltData.xAxis(start:stop),pltData.motL_temp(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.motR_temp(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.motL_temp(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.motR_temp(tr,:)) legend(ax4, "Left", "Right") % plot 5: Motor velocities ax5 = nexttile(tl); hold(ax5, "on") grid(ax5, "on") title(ax5, "Motor Velocities [1/min]") - plot(ax5,pltData.xAxis(start:stop),pltData.motL_vel_rpm(start:stop)) - plot(ax5,pltData.xAxis(start:stop),pltData.motR_vel_rpm(start:stop)) + plot(ax5,pltData.xAxis(tr,:),pltData.motL_vel_rpm(tr,:)) + plot(ax5,pltData.xAxis(tr,:),pltData.motR_vel_rpm(tr,:)) legend(ax5, "Left", "Right") % link all x axes diff --git a/season/FT24/plot_settings/plot_suspension_histogram.m b/season/FT24/plot_settings/plot_suspension_histogram.m index 19a65db..3d440f9 100644 --- a/season/FT24/plot_settings/plot_suspension_histogram.m +++ b/season/FT24/plot_settings/plot_suspension_histogram.m @@ -1,30 +1,30 @@ -function [outputArg] = plot_suspension_histogram(panel, start, stop, pltData) +function [outputArg] = plot_suspension_histogram(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); % plot 1: position heave front [mm/s] ax1 = nexttile(tl); hold(ax1, "on") grid(ax1, "on") - title(ax1, "Front left [mm/s]") - histogram(ax1, pltData.velocity_FL_mmps(start:stop),"Normalization","percentage") + title(ax1, "Heave Front [mm/s]") + histogram(ax1, pltData.velocityHeaveFront_mmps(tr,:),"Normalization","percentage") % plot 2: position roll front [mm/s] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") - title(ax2, "Front right [mm/s]") - histogram(ax2, pltData.velocity_FR_mmps(start:stop),"Normalization","percentage") + title(ax2, "Roll Front [mm/s]") + histogram(ax2, pltData.velocityHeaveFront_mmps(tr,:),"Normalization","percentage") % plot 3: position heave front [mm/s] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") - title(ax3, "Rear left [mm/s]") - histogram(ax3, pltData.velocity_RL_mmps(start:stop),"Normalization","percentage") + title(ax3, "Heave Rear [mm/s]") + histogram(ax3, pltData.velocityHeaveFront_mmps(tr,:),"Normalization","percentage") % plot 4: position roll front [mm/s] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") - title(ax4, "Rear right [mm/s]") - histogram(ax4, pltData.velocity_RR_mmps(start:stop),"Normalization","percentage") + title(ax4, "Roll Rear [mm/s]") + histogram(ax4, pltData.velocityHeaveFront_mmps(tr,:),"Normalization","percentage") linkaxes([ax1, ax2, ax3, ax4],"x") % return null (not relevant for plots!) diff --git a/season/FT24/plot_settings/plot_suspension_positions.m b/season/FT24/plot_settings/plot_suspension_positions.m index 2369dac..c24b91f 100644 --- a/season/FT24/plot_settings/plot_suspension_positions.m +++ b/season/FT24/plot_settings/plot_suspension_positions.m @@ -1,30 +1,30 @@ -function [outputArg] = plot_suspension_positions(panel, start, stop, pltData) +function [outputArg] = plot_suspension_positions(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); - % plot 1: position front left [mm] + % plot 1: position heave front [mm] ax1 = nexttile(tl); hold(ax1, "on") grid(ax1, "on") - title(ax1, "Damper Position Front left [mm] !!!check sortdata calculation!!!") - plot(ax1, pltData.xAxis(start:stop),pltData.damper_FL_mm(start:stop)) - % plot 2: position front right [mm] + title(ax1, "Heave Front [mm]") + plot(ax1, pltData.xAxis(tr,:),pltData.damperHeaveFront_mm(tr,:)) + % plot 2: position roll front [mm] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") - title(ax2, "Damper Position Front right [mm]") - plot(ax2, pltData.xAxis(start:stop),pltData.damper_FR_mm(start:stop)) - % plot 3: position rear left [mm] + title(ax2, "Roll Front [mm]") + plot(ax2, pltData.xAxis(tr,:),pltData.damperRollFront_mm(tr,:)) + % plot 3: position heave front [mm] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") - title(ax3, "Damper Position Rear left [mm]") - plot(ax3, pltData.xAxis(start:stop),pltData.damper_RL_mm(start:stop)) - % plot 4: position rear right [mm] + title(ax3, "Heave Rear [mm]") + plot(ax3, pltData.xAxis(tr,:),pltData.damperHeaveRear_mm(tr,:)) + % plot 4: position roll front [mm] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") - title(ax4, "Damper Position Rear right [mm]") - plot(ax4, pltData.xAxis(start:stop),pltData.damper_RR_mm(start:stop)) + title(ax4, "Roll Rear [mm]") + plot(ax4, pltData.xAxis(tr,:),pltData.damperRollRear_mm(tr,:)) linkaxes([ax1, ax2, ax3, ax4],"x") % return null (not relevant for plots!) diff --git a/season/FT24/plot_settings/plot_suspension_velocities.m b/season/FT24/plot_settings/plot_suspension_velocities.m index 221bb41..fbace10 100644 --- a/season/FT24/plot_settings/plot_suspension_velocities.m +++ b/season/FT24/plot_settings/plot_suspension_velocities.m @@ -1,30 +1,30 @@ -function [outputArg] = plot_suspension_velocities(panel, start, stop, pltData) +function [outputArg] = plot_suspension_velocities(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); - % plot 1: velocity front left [mm/s] + % plot 1: velocity heave front [mm/s] ax1 = nexttile(tl); hold(ax1, "on") grid(ax1, "on") - title(ax1, "Damper Front Left Velocity [mm/s] !!!check sortdata calculation!!!") - plot(ax1, pltData.xAxis(start:stop), pltData.velocity_FL_mmps(start:stop)) - % plot 2: velocity front right [mm/s] + title(ax1, "Heave Front [mm/s]") + plot(ax1, pltData.xAxis(tr,:), pltData.velocityHeaveFront_mmps(tr,:)) + % plot 2: velocity roll front [mm/s] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") - title(ax2, "Damper Front Right Velocity [mm/s]") - plot(ax2, pltData.xAxis(start:stop), pltData.velocity_FR_mmps(start:stop)) - % plot 3: velocity rear left [mm/s] + title(ax2, "Roll Front [mm/s]") + plot(ax2, pltData.xAxis(tr,:), pltData.velocityRollFront_mmps(tr,:)) + % plot 3: velocity heave front [mm/s] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") - title(ax3, "Damper Rear Left Velocity [mm/s]") - plot(ax3, pltData.xAxis(start:stop), pltData.velocity_RL_mmps(start:stop)) - % plot 4: velocity rear right [mm/s] + title(ax3, "Heave Rear [mm/s]") + plot(ax3, pltData.xAxis(tr,:), pltData.velocityHeaveRear_mmps(tr,:)) + % plot 4: velocity roll front [mm/s] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") - title(ax4, "Damper Rear Right Velocity [mm/s]") - plot(ax4, pltData.xAxis(start:stop), pltData.velocity_RR_mmps(start:stop)) + title(ax4, "Roll Rear [mm/s]") + plot(ax4, pltData.xAxis(tr,:), pltData.velocityRollRear_mmps(tr,:)) linkaxes([ax1, ax2, ax3, ax4],"x") % return null (not relevant for plots!) diff --git a/season/FT24/plot_settings/plot_tires_firctionCircle.m b/season/FT24/plot_settings/plot_tires_firctionCircle.m index ef2830c..49d45eb 100644 --- a/season/FT24/plot_settings/plot_tires_firctionCircle.m +++ b/season/FT24/plot_settings/plot_tires_firctionCircle.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_tires_firctionCircle(panel, start, stop, pltData) +function [outputArg] = plot_tires_firctionCircle(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"flow"); @@ -10,10 +10,20 @@ function [outputArg] = plot_tires_firctionCircle(panel, start, stop, pltData) ylabel(ax1, "Longitudinal Acc [g]") xlabel(ax1, "Lateral Acc [g]") colors = colororder(ax1); - plot(ax1,pltData.acc_lat_g(start:stop), pltData.acc_long_g(start:stop),"Color",colors(i,:)) - K = convhull(pltData.acc_lat_g(start:stop), pltData.acc_long_g(start:stop)); - plot(ax1,pltData.acc_lat_g(K), pltData.acc_long_g(K),"Color",colors(i,:),"LineStyle","--","LineWidth",2) + % old code for reference + % for i = 1:length(selected_laps) + % plot(ax1,pltData(selected_laps(i)).acc_lat_g, ... + % pltData(selected_laps(i)).acc_long_g,"Color",colors(i,:)) + % K = convhull(pltData(selected_laps(i)).acc_lat_g, pltData(selected_laps(i)).acc_long_g); + % plot(ax1,pltData(selected_laps(i)).acc_lat_g(K), ... + % pltData(selected_laps(i)).acc_long_g(K),"Color",colors(i,:),"LineStyle","--","LineWidth",2) + % end + + + plot(ax1,pltData.acc_lat_g(tr,:), pltData.acc_long_g(tr,:)) + K = convhull(pltData.acc_lat_g(tr,:), pltData.acc_long_g(tr,:)); + plot(ax1,pltData.acc_lat_g(K), pltData.acc_long_g(K)) % return null (not relevant for plots!) outputArg = []; end diff --git a/season/FT24/plot_settings/sidebar_stats.m b/season/FT24/plot_settings/sidebar_stats.m index 018b9b8..6a9b450 100644 --- a/season/FT24/plot_settings/sidebar_stats.m +++ b/season/FT24/plot_settings/sidebar_stats.m @@ -1,4 +1,4 @@ -function [sidebarLabel] = sidebar_stats(pltData) +function [sidebarLabel] = sidebar_stats(stats) %SIDEBAR_STATS Summary of this function goes here % Detailed explanation goes here sidebarLabel = sprintf(... @@ -9,13 +9,13 @@ function [sidebarLabel] = sidebar_stats(pltData) " Peak (mean): %1.f kW\n" + ... "\nDistance: %.2f km\n" + ... "\nTopspeed: %.1f km/h\n", ... - pltData.energy_used_kwh, ... - pltData.energy_regen_kwh, ... - pltData.energy_kwh, ... - pltData.peakPower_kw, ... - pltData.peakPowerMean_kw, ... - pltData.distanceTotal_km, ... - pltData.maxSpeed_kph ... + stats.energy_used_kwh, ... + stats.energy_regen_kwh, ... + stats.energy_kwh, ... + stats.peakPower_kw, ... + stats.peakPowerMean_kw, ... + stats.distanceTotal_km, ... + stats.maxSpeed_kph ... ); end diff --git a/season/FT24/sortdata.m b/season/FT24/sortdata.m index c3314ce..722ee05 100644 --- a/season/FT24/sortdata.m +++ b/season/FT24/sortdata.m @@ -1,44 +1,45 @@ -function [pltData] = sortdata(data,start,stop) +function [pltData, stats] = sortdata(data) date = dateshift(data.Time(1),'start','day'); time_hms = data.Time-date; time_s = seconds(time_hms); time_s = time_s - time_s(1); % set beginning of session to 0 % x-Axis: - pltData.Time = data.Time(start:stop); - pltData.time_s = time_s(start:stop)-time_s(start); - pltData.time_hms = time_hms(start:stop); + pltData.time_s = time_s; + pltData.time_hms = time_hms; + % distance calculation - speed_mps = movmean(data.ABX_Driver_ABX_Speed(start:stop),50); % TODO: test different speed filters for distance calculation + speed_mps = movmean(data.ABX_Driver_ABX_Speed,50); % TODO: test different speed filters for distance calculation pltData.distance(1) = 0; for i = 2:length(speed_mps) - pltData.distance(i) = speed_mps(i)*(pltData.time_s(i)-pltData.time_s(i-1)) + pltData.distance(i-1); + pltData.distance(i) = speed_mps(i)*(time_s(i)-time_s(i-1)) + pltData.distance(i-1); end + pltData.distance = pltData.distance.'; pltData.xAxis = pltData.time_s; % set time as default x-Axis for plotting %% Misc - pltData.app_percent = data.ABX_Driver_ABX_APPS_percent(start:stop); - pltData.speed_kph = 3.6*movmean(data.ABX_Driver_ABX_Speed(start:stop),50); % same filter as for distance calculation ??? - pltData.steering_deg = data.ABX_Driver_ABX_Steering_Angle(start:stop); + pltData.app_percent = data.ABX_Driver_ABX_APPS_percent; + pltData.speed_kph = 3.6*movmean(data.ABX_Driver_ABX_Speed,50); % same filter as for distance calculation ??? + pltData.steering_deg = data.ABX_Driver_ABX_Steering_Angle; %% AMS: - pltData.ams_soc = data.AMS_Status_SOC(start:stop); - pltData.ams_tmax = data.AMS_Status_Max_cell_temp(start:stop); - pltData.ams_utot = data.Shunt_Voltage1_Shunt_Voltage1(start:stop); - pltData.ams_itot = data.Shunt_Current_Shunt_Current(start:stop); + pltData.ams_soc = data.AMS_Status_SOC; + pltData.ams_tmax = data.AMS_Status_Max_cell_temp; + pltData.ams_utot = data.Shunt_Voltage1_Shunt_Voltage1; + pltData.ams_itot = data.Shunt_Current_Shunt_Current; % calculations: pltData.ams_ptot = pltData.ams_utot.*pltData.ams_itot/1000; %% Brakes % brake pressure - pltData.brakePFront_bar = data.ABX_Driver_ABX_BrakeP_F(start:stop); - pltData.brakePRear_bar = data.ABX_Driver_ABX_BrakeP_R(start:stop); + pltData.brakePFront_bar = data.ABX_Driver_ABX_BrakeP_F; + pltData.brakePRear_bar = data.ABX_Driver_ABX_BrakeP_R; % brake disc temperatures - pltData.brakeTFrontLeft_degC = data.ABX_BrakeT_ABX_BrakeT_FL(start:stop); - pltData.brakeTFrontRight_degC = data.ABX_BrakeT_ABX_BrakeT_FR(start:stop); - pltData.brakeTRearLeft_degC = data.ABX_BrakeT_ABX_BrakeT_RL(start:stop); - pltData.brakeTRearRight_degC = data.ABX_BrakeT_ABX_BrakeT_RR(start:stop); + pltData.brakeTFrontLeft_degC = data.ABX_BrakeT_ABX_BrakeT_FL; + pltData.brakeTFrontRight_degC = data.ABX_BrakeT_ABX_BrakeT_FR; + pltData.brakeTRearLeft_degC = data.ABX_BrakeT_ABX_BrakeT_RL; + pltData.brakeTRearRight_degC = data.ABX_BrakeT_ABX_BrakeT_RR; % calculate brake bias [%] minBrakeP = 5; % minimum brake pressure to avoid artifacts due to sensor noise near 0 bar brakePFront = pltData.brakePFront_bar; @@ -51,10 +52,10 @@ function [pltData] = sortdata(data,start,stop) %% Dampers % damper positions - pltData.damper_FL_mm = data.ABX_Dampers_ABX_Damper_FL(start:stop); %Heave_F - pltData.damper_FR_mm = data.ABX_Dampers_ABX_Damper_FR(start:stop); %Roll_F - pltData.damper_RL_mm = data.ABX_Dampers_ABX_Damper_RL(start:stop); %Heave_R - pltData.damper_RR_mm = data.ABX_Dampers_ABX_Damper_RR(start:stop); %Roll_R + pltData.damper_FL_mm = data.ABX_Dampers_ABX_Damper_FL; %Heave_F + pltData.damper_FR_mm = data.ABX_Dampers_ABX_Damper_FR; %Roll_F + pltData.damper_RL_mm = data.ABX_Dampers_ABX_Damper_RL; %Heave_R + pltData.damper_RR_mm = data.ABX_Dampers_ABX_Damper_RR; %Roll_R % calculate damper velocities pltData.velocity_FL_mmps(1) = 0; pltData.velocity_FR_mmps(1) = 0; @@ -68,36 +69,36 @@ function [pltData] = sortdata(data,start,stop) pltData.velocity_RR_mmps(i) = pltData.damper_RR_mm(i)-pltData.damper_RR_mm(i-1)/timestep; end % filter damper velocities ??? bessere Berechnung über mittelwert aus mehreren werten? Vorfilterung? - pltData.velocity_FL_mmps = movmean(pltData.velocity_FL_mmps,100); - pltData.velocity_FR_mmps = movmean(pltData.velocity_FR_mmps,100); - pltData.velocity_RL_mmps = movmean(pltData.velocity_RL_mmps,100); - pltData.velocity_RR_mmps = movmean(pltData.velocity_RR_mmps,100); + pltData.velocity_FL_mmps = movmean(pltData.velocity_FL_mmps,100).'; + pltData.velocity_FR_mmps = movmean(pltData.velocity_FR_mmps,100).'; + pltData.velocity_RL_mmps = movmean(pltData.velocity_RL_mmps,100).'; + pltData.velocity_RR_mmps = movmean(pltData.velocity_RR_mmps,100).'; %% IMU - VN200, no need to implement didnt work well anyway % Acceleration - % pltData.acc_long_g = movmean(data.XSens_Acceleration_XSens_accX(start:stop),100)/9.81; - % pltData.acc_lat_g = movmean(data.XSens_Acceleration_XSens_accY(start:stop),100)/9.81; + pltData.acc_long_g = movmean(data.VN200_IMU_ACC_LIN_AccLinX,100)/9.81; + pltData.acc_lat_g = movmean(data.VN200_IMU_ACC_LIN_AccLinY,100)/9.81; % Rate of turn - % pltData.rot_roll_degps = movmean(data.XSens_RateOfTurn_XSens_gyrX(start:stop),100); - % pltData.rot_pitch_degps = movmean(data.XSens_RateOfTurn_XSens_gyrY(start:stop),100); - % pltData.rot_yaw_degps = movmean(data.XSens_RateOfTurn_XSens_gyrZ(start:stop),100); + pltData.rot_roll_degps = movmean(data.VN200_IMU_ACC_ANG_AccAngX,100); + pltData.rot_pitch_degps = movmean(data.VN200_IMU_ACC_ANG_AccAngY,100); + pltData.rot_yaw_degps = movmean(data.VN200_IMU_ACC_ANG_AccAngZ,100); %% Inverters % inverter temperatures - pltData.invL_temp = data.INV_L_TxPDO_1_T_Inv_L(start:stop); - pltData.invR_temp = data.INV_R_TxPDO_1_T_Inv_R(start:stop); + pltData.invL_temp = data.INV_L_TxPDO_1_T_Inv_L; + pltData.invR_temp = data.INV_R_TxPDO_1_T_Inv_R; % motor temperatures - pltData.motL_temp = data.INV_L_TxPDO_1_T_Mot_L(start:stop); - pltData.motR_temp = data.INV_R_TxPDO_1_T_Mot_R(start:stop); + pltData.motL_temp = data.INV_L_TxPDO_1_T_Mot_L; + pltData.motR_temp = data.INV_R_TxPDO_1_T_Mot_R; % motor velocities - pltData.motL_vel_rpm = 60*data.INV_L_TxPDO_4_Velocity_L(start:stop); - pltData.motR_vel_rpm = 60*data.INV_R_TxPDO_4_Velocity_R(start:stop); + pltData.motL_vel_rpm = 60*data.INV_L_TxPDO_4_Velocity_L; + pltData.motR_vel_rpm = 60*data.INV_R_TxPDO_4_Velocity_R; % inverter torque demand - pltData.invL_torqueDemand = data.INV_L_TxPDO_3_DemandedTorque_L(start:stop)/10; % /10 to match autobox torque - pltData.invR_torqueDemand = data.INV_R_TxPDO_3_DemandedTorque_R(start:stop)/10; + pltData.invL_torqueDemand = data.INV_L_TxPDO_3_DemandedTorque_L/10; % /10 to match autobox torque + pltData.invR_torqueDemand = data.INV_R_TxPDO_3_DemandedTorque_R/10; % inverter actual torque - pltData.invL_torqueActual = data.INV_L_TxPDO_3_ActualTorque_L(start:stop)/10; - pltData.invR_torqueActual = data.INV_R_TxPDO_3_ActualTorque_R(start:stop)/10; + pltData.invL_torqueActual = data.INV_L_TxPDO_3_ActualTorque_L/10; + pltData.invR_torqueActual = data.INV_R_TxPDO_3_ActualTorque_R/10; %% Wheelspeed @@ -109,15 +110,18 @@ function [pltData] = sortdata(data,start,stop) power_regen_kw(power_regen_kw > 0) = 0; power_used_kw = pltData.ams_ptot; power_used_kw(power_used_kw < 0) = 0; - pltData.energy_kwh = trapz(pltData.time_s, pltData.ams_ptot)/3600; - pltData.energy_regen_kwh = trapz(pltData.time_s, power_regen_kw)/3600; - pltData.energy_used_kwh = trapz(pltData.time_s, power_used_kw)/3600; - pltData.distanceTotal_km = trapz(pltData.time_s, pltData.speed_kph./3.6)/1000; % 1/3.6 for km/h to m/s and /1000 for km output - pltData.peakPower_kw = max(pltData.ams_ptot); - pltData.peakPowerMean_kw = max(movmean(pltData.ams_ptot,500)); + stats.energy_kwh = trapz(time_s, pltData.ams_ptot)/3600; + stats.energy_regen_kwh = trapz(time_s, power_regen_kw)/3600; + stats.energy_used_kwh = trapz(time_s, power_used_kw)/3600; + stats.distanceTotal_km = trapz(time_s, pltData.speed_kph./3.6)/1000; % 1/3.6 for km/h to m/s and /1000 for km output + stats.peakPower_kw = max(pltData.ams_ptot); + stats.peakPowerMean_kw = max(movmean(pltData.ams_ptot,500)); - pltData.maxSpeed_kph = max(pltData.speed_kph); - pltData.startTime = time_hms(start); - pltData.stopTime = time_hms(stop); + stats.maxSpeed_kph = max(pltData.speed_kph); + % pltData.startTime = time_hms(1); + % pltData.stopTime = time_hms(end); + + %% struct2timetable + pltData = table2timetable(struct2table(pltData), "RowTimes", data.Time); end diff --git a/season/FT25/plot_settings/plot_accumulator.m b/season/FT25/plot_settings/plot_accumulator.m index 3fc63e8..b212c3f 100644 --- a/season/FT25/plot_settings/plot_accumulator.m +++ b/season/FT25/plot_settings/plot_accumulator.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_accumulator(panel, start, stop, pltData) +function [outputArg] = plot_accumulator(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,27 +7,27 @@ function [outputArg] = plot_accumulator(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: power [kW] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Power [kW]") - plot(ax2,pltData.xAxis(start:stop),pltData.ams_ptot(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.ams_ptot(tr,:)) % plot 3: Max Cell Temp [°C] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Max Cell Temp [°C]") - plot(ax3,pltData.xAxis(start:stop),pltData.ams_tmax(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.ams_tmax(tr,:)) % plot 4: State of charge [%] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "SOC") - plot(ax4,pltData.xAxis(start:stop),pltData.ams_soc(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.ams_soc(tr,:)) % link all x axes linkaxes([ax1, ax2, ax3, ax4],"x") diff --git a/season/FT25/plot_settings/plot_brakes.m b/season/FT25/plot_settings/plot_brakes.m index a5f8587..8781464 100644 --- a/season/FT25/plot_settings/plot_brakes.m +++ b/season/FT25/plot_settings/plot_brakes.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_brakes(panel, start, stop, pltData) +function [outputArg] = plot_brakes(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,15 +7,15 @@ function [outputArg] = plot_brakes(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: brake pressure front/rear [bar] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Brake Pressure F/R [bar]") - plot(ax2,pltData.xAxis(start:stop),pltData.brakePFront_bar(start:stop)) - plot(ax2,pltData.xAxis(start:stop),pltData.brakePRear_bar(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.brakePFront_bar(tr,:)) + plot(ax2,pltData.xAxis(tr,:),pltData.brakePRear_bar(tr,:)) legend(ax2, "Front", "Rear") % plot 3: longitudinal acceleration [g] @@ -23,17 +23,17 @@ function [outputArg] = plot_brakes(panel, start, stop, pltData) hold(ax3, "on") grid(ax3, "on") title(ax3, "Long Acc [g]") - plot(ax3,pltData.xAxis(start:stop),pltData.acc_long_g(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.acc_long_g(tr,:)) % plot 4: Brake Temp [°C] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Brake Temp [°C]") - plot(ax4,pltData.xAxis(start:stop),pltData.brakeTFrontLeft_degC(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.brakeTFrontRight_degC(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.brakeTRearLeft_degC(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.brakeTRearRight_degC(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.brakeTFrontLeft_degC(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.brakeTFrontRight_degC(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.brakeTRearLeft_degC(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.brakeTRearRight_degC(tr,:)) legend(ax4, "FL", "FR", "RL", "RR") % plot 5: brake bias [%] @@ -41,7 +41,7 @@ function [outputArg] = plot_brakes(panel, start, stop, pltData) hold(ax5, "on") grid(ax5, "on") title(ax5, "Brake Bias [%]") - plot(ax5,pltData.xAxis(start:stop),pltData.brakeBias_perc(start:stop)) + plot(ax5,pltData.xAxis(tr,:),pltData.brakeBias_perc(tr,:)) % link all x axes linkaxes([ax1, ax2, ax3, ax4, ax5],"x") diff --git a/season/FT25/plot_settings/plot_custom.m b/season/FT25/plot_settings/plot_custom.m index ee8707f..011bb8b 100644 --- a/season/FT25/plot_settings/plot_custom.m +++ b/season/FT25/plot_settings/plot_custom.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_custom(panel, start, stop, pltData) +function [outputArg] = plot_custom(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"flow"); @@ -10,7 +10,7 @@ function [outputArg] = plot_custom(panel, start, stop, pltData) ylabel(ax1, "y-axis label") xlabel(ax1, "x-axis label") %"XXX = enter name of data you want to plot" - plot(ax1,pltData.xAxis(start:stop),pltData.XXX(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.XXX(tr,:)) % more plots for customizing @@ -19,21 +19,21 @@ function [outputArg] = plot_custom(panel, start, stop, pltData) % hold(ax2, "on") % grid(ax2, "on") % title(ax2, "Power [kW]") - % plot(ax2,pltData.xAxis(start:stop),pltData. XXXX (start:stop)) + % plot(ax2,pltData.xAxis(tr,:),pltData. XXXX (tr,:)) % plot 3: % ax3 = nexttile(tl); % hold(ax3, "on") % grid(ax3, "on") % title(ax3, "Max Cell Temp [°C]") - % plot(ax3,pltData.xAxis(start:stop),pltData. XXXX (start:stop)) + % plot(ax3,pltData.xAxis(tr,:),pltData. XXXX (tr,:)) % plot 4: % ax4 = nexttile(tl); % hold(ax4, "on") % grid(ax4, "on") % title(ax4, "SOC") - % plot(ax4,pltData.xAxis(start:stop),pltData. XXXX (start:stop)) + % plot(ax4,pltData.xAxis(tr,:),pltData. XXXX (tr,:)) % link all x axes diff --git a/season/FT25/plot_settings/plot_driver_braking.m b/season/FT25/plot_settings/plot_driver_braking.m index 0648479..3d816a6 100644 --- a/season/FT25/plot_settings/plot_driver_braking.m +++ b/season/FT25/plot_settings/plot_driver_braking.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_driver_braking(panel, start, stop, pltData) +function [outputArg] = plot_driver_braking(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,25 +7,25 @@ function [outputArg] = plot_driver_braking(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: accelerator pedal position [%] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "APP [%]") - plot(ax2,pltData.xAxis(start:stop),pltData.app_percent(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.app_percent(tr,:)) % plot 3: brake pressure front [bar] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Brake Pressure Front [bar]") - plot(ax3,pltData.xAxis(start:stop),pltData.brakePFront_bar(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.brakePFront_bar(tr,:)) % plot 4: longitudinal acceleration [g] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Long Acc [g]") - plot(ax4,pltData.xAxis(start:stop),pltData.acc_long_g(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.acc_long_g(tr,:)) % link all x axes linkaxes([ax1, ax2, ax3, ax4],"x") diff --git a/season/FT25/plot_settings/plot_driver_general.m b/season/FT25/plot_settings/plot_driver_general.m index e33b68c..dfc5e0d 100644 --- a/season/FT25/plot_settings/plot_driver_general.m +++ b/season/FT25/plot_settings/plot_driver_general.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_driver_general(panel, start, stop, pltData) +function [outputArg] = plot_driver_general(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,25 +7,25 @@ function [outputArg] = plot_driver_general(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: accelerator pedal position [%] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "APP [%]") - plot(ax2,pltData.xAxis(start:stop),pltData.app_percent(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.app_percent(tr,:)) % plot 3: brake pressure front [bar] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Brake Pressure Front [bar]") - plot(ax3,pltData.xAxis(start:stop),pltData.brakePFront_bar(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.brakePFront_bar(tr,:)) % plot 4: steering angle [°] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Steering Angle [°]") - plot(ax4,pltData.xAxis(start:stop),pltData.steering_deg(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.steering_deg(tr,:)) % link all x axes linkaxes([ax1, ax2, ax3, ax4],"x") diff --git a/season/FT25/plot_settings/plot_driver_statistics.m b/season/FT25/plot_settings/plot_driver_statistics.m index a72408e..6dfd0a3 100644 --- a/season/FT25/plot_settings/plot_driver_statistics.m +++ b/season/FT25/plot_settings/plot_driver_statistics.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_driver_statistics(panel, start, stop, pltData) +function [outputArg] = plot_driver_statistics(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,13 +7,13 @@ function [outputArg] = plot_driver_statistics(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: accelerator pedal position [%] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "APP [%]") - plot(ax2,pltData.xAxis(start:stop),pltData.app_percent(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.app_percent(tr,:)) linkaxes([ax1, ax2],"x") % plot 3: accelerator pedal position histogram ax3 = nexttile(tl); @@ -22,7 +22,7 @@ function [outputArg] = plot_driver_statistics(panel, start, stop, pltData) title(ax3, "APP distribution") ylabel(ax3, "\sigma [%]") xlabel(ax3, "APP [%]") - histogram(ax3,pltData.app_percent(start:stop),"Normalization","percentage") + histogram(ax3,pltData.app_percent(tr,:),"Normalization","percentage") % plot 4: brake pressure histogram ax4 = nexttile(tl); hold(ax4, "on") @@ -30,7 +30,7 @@ function [outputArg] = plot_driver_statistics(panel, start, stop, pltData) title(ax4, "BrakeP distribution") ylabel(ax4, "\sigma [%]") xlabel(ax4, "Brake Pressure Front [bar]") - histogram(ax4,pltData.brakePFront_bar(start:stop),"Normalization","percentage") + histogram(ax4,pltData.brakePFront_bar(tr,:),"Normalization","percentage") % return null (not relevant for plots!) outputArg = []; diff --git a/season/FT25/plot_settings/plot_driver_steering.m b/season/FT25/plot_settings/plot_driver_steering.m index dc1eb6f..07633de 100644 --- a/season/FT25/plot_settings/plot_driver_steering.m +++ b/season/FT25/plot_settings/plot_driver_steering.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_driver_steering(panel, start, stop, pltData) +function [outputArg] = plot_driver_steering(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,13 +7,13 @@ function [outputArg] = plot_driver_steering(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: steering angle [°] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Steering Angle [°]") - plot(ax2,pltData.xAxis(start:stop),pltData.steering_deg(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.steering_deg(tr,:)) % plot 3: oversteer ax3 = nexttile(tl); hold(ax3, "on") @@ -26,9 +26,9 @@ function [outputArg] = plot_driver_steering(panel, start, stop, pltData) hold(ax4, "on") grid(ax4, "on") title(ax4, "Lateral Acc [g]") - plot(ax4,pltData.xAxis(start:stop),pltData.acc_lat_g)(start:stop) + plot(ax4,pltData.xAxis(tr,:),pltData.acc_lat_g(tr,:)) % link all x axes - linkaxes([ax1, ax2, ax3, ax4],"x") + %linkaxes([ax1, ax2, ax3, ax4],"x") % return null (not relevant for plots!) outputArg = []; diff --git a/season/FT25/plot_settings/plot_inverter.m b/season/FT25/plot_settings/plot_inverter.m index 6d57e10..eba215d 100644 --- a/season/FT25/plot_settings/plot_inverter.m +++ b/season/FT25/plot_settings/plot_inverter.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_inverter(panel, start, stop, pltData) +function [outputArg] = plot_inverter(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,38 +7,38 @@ function [outputArg] = plot_inverter(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: Inverter Temps [°C] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Inverter Temp [°C]") - plot(ax2,pltData.xAxis(start:stop),pltData.invL_temp(start:stop)) - plot(ax2,pltData.xAxis(start:stop),pltData.invR_temp(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.invL_temp(tr,:)) + plot(ax2,pltData.xAxis(tr,:),pltData.invR_temp(tr,:)) legend(ax2, "Left", "Right") % plot 3: Torque request / actual inverter left ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Left Torque") - plot(ax3,pltData.xAxis(start:stop),pltData.invL_torqueDemand(start:stop)) - plot(ax3,pltData.xAxis(start:stop),pltData.invL_torqueActual(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.invL_torqueDemand(tr,:)) + plot(ax3,pltData.xAxis(tr,:),pltData.invL_torqueActual(tr,:)) legend(ax3, "Demand", "Actual") % plot 4: Torque request / actual inverter right ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Right Torque") - plot(ax4,pltData.xAxis(start:stop),pltData.invR_torqueDemand(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.invR_torqueActual(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.invR_torqueDemand(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.invR_torqueActual(tr,:)) legend(ax4, "Demand", "Actual") % plot 5: Motor velocities ax5 = nexttile(tl); hold(ax5, "on") grid(ax5, "on") title(ax5, "Motor Velocities [1/min]") - plot(ax5,pltData.xAxis(start:stop),pltData.motL_vel_rpm(start:stop)) - plot(ax5,pltData.xAxis(start:stop),pltData.motR_vel_rpm(start:stop)) + plot(ax5,pltData.xAxis(tr,:),pltData.motL_vel_rpm(tr,:)) + plot(ax5,pltData.xAxis(tr,:),pltData.motR_vel_rpm(tr,:)) legend(ax5, "Left", "Right") % link all x axes diff --git a/season/FT25/plot_settings/plot_powertrain.m b/season/FT25/plot_settings/plot_powertrain.m index d5199f6..ccbac2c 100644 --- a/season/FT25/plot_settings/plot_powertrain.m +++ b/season/FT25/plot_settings/plot_powertrain.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_powertrain(panel, start, stop, pltData) +function [outputArg] = plot_powertrain(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); @@ -7,36 +7,36 @@ function [outputArg] = plot_powertrain(panel, start, stop, pltData) hold(ax1, "on") grid(ax1, "on") title(ax1, "Speed [km/h]") - plot(ax1,pltData.xAxis(start:stop),pltData.speed_kph(start:stop)) + plot(ax1,pltData.xAxis(tr,:),pltData.speed_kph(tr,:)) % plot 2: power [kW] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") title(ax2, "Power [kW]") - plot(ax2,pltData.xAxis(start:stop),pltData.ams_ptot(start:stop)) + plot(ax2,pltData.xAxis(tr,:),pltData.ams_ptot(tr,:)) % plot 3: Inverter Temps [°C] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") title(ax3, "Inverter Temp [°C]") - plot(ax3,pltData.xAxis(start:stop),pltData.invL_temp(start:stop)) - plot(ax3,pltData.xAxis(start:stop),pltData.invR_temp(start:stop)) + plot(ax3,pltData.xAxis(tr,:),pltData.invL_temp(tr,:)) + plot(ax3,pltData.xAxis(tr,:),pltData.invR_temp(tr,:)) legend(ax3, "Left", "Right") % plot 4: Motor Temps ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") title(ax4, "Motor Temp [°C]") - plot(ax4,pltData.xAxis(start:stop),pltData.motL_temp(start:stop)) - plot(ax4,pltData.xAxis(start:stop),pltData.motR_temp(start:stop)) + plot(ax4,pltData.xAxis(tr,:),pltData.motL_temp(tr,:)) + plot(ax4,pltData.xAxis(tr,:),pltData.motR_temp(tr,:)) legend(ax4, "Left", "Right") % plot 5: Motor velocities ax5 = nexttile(tl); hold(ax5, "on") grid(ax5, "on") title(ax5, "Motor Velocities [1/min]") - plot(ax5,pltData.xAxis(start:stop),pltData.motL_vel_rpm(start:stop)) - plot(ax5,pltData.xAxis(start:stop),pltData.motR_vel_rpm(start:stop)) + plot(ax5,pltData.xAxis(tr,:),pltData.motL_vel_rpm(tr,:)) + plot(ax5,pltData.xAxis(tr,:),pltData.motR_vel_rpm(tr,:)) legend(ax5, "Left", "Right") % link all x axes diff --git a/season/FT25/plot_settings/plot_suspension_histogram.m b/season/FT25/plot_settings/plot_suspension_histogram.m index 19a65db..3d440f9 100644 --- a/season/FT25/plot_settings/plot_suspension_histogram.m +++ b/season/FT25/plot_settings/plot_suspension_histogram.m @@ -1,30 +1,30 @@ -function [outputArg] = plot_suspension_histogram(panel, start, stop, pltData) +function [outputArg] = plot_suspension_histogram(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); % plot 1: position heave front [mm/s] ax1 = nexttile(tl); hold(ax1, "on") grid(ax1, "on") - title(ax1, "Front left [mm/s]") - histogram(ax1, pltData.velocity_FL_mmps(start:stop),"Normalization","percentage") + title(ax1, "Heave Front [mm/s]") + histogram(ax1, pltData.velocityHeaveFront_mmps(tr,:),"Normalization","percentage") % plot 2: position roll front [mm/s] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") - title(ax2, "Front right [mm/s]") - histogram(ax2, pltData.velocity_FR_mmps(start:stop),"Normalization","percentage") + title(ax2, "Roll Front [mm/s]") + histogram(ax2, pltData.velocityHeaveFront_mmps(tr,:),"Normalization","percentage") % plot 3: position heave front [mm/s] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") - title(ax3, "Rear left [mm/s]") - histogram(ax3, pltData.velocity_RL_mmps(start:stop),"Normalization","percentage") + title(ax3, "Heave Rear [mm/s]") + histogram(ax3, pltData.velocityHeaveFront_mmps(tr,:),"Normalization","percentage") % plot 4: position roll front [mm/s] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") - title(ax4, "Rear right [mm/s]") - histogram(ax4, pltData.velocity_RR_mmps(start:stop),"Normalization","percentage") + title(ax4, "Roll Rear [mm/s]") + histogram(ax4, pltData.velocityHeaveFront_mmps(tr,:),"Normalization","percentage") linkaxes([ax1, ax2, ax3, ax4],"x") % return null (not relevant for plots!) diff --git a/season/FT25/plot_settings/plot_suspension_positions.m b/season/FT25/plot_settings/plot_suspension_positions.m index 2369dac..c24b91f 100644 --- a/season/FT25/plot_settings/plot_suspension_positions.m +++ b/season/FT25/plot_settings/plot_suspension_positions.m @@ -1,30 +1,30 @@ -function [outputArg] = plot_suspension_positions(panel, start, stop, pltData) +function [outputArg] = plot_suspension_positions(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); - % plot 1: position front left [mm] + % plot 1: position heave front [mm] ax1 = nexttile(tl); hold(ax1, "on") grid(ax1, "on") - title(ax1, "Damper Position Front left [mm] !!!check sortdata calculation!!!") - plot(ax1, pltData.xAxis(start:stop),pltData.damper_FL_mm(start:stop)) - % plot 2: position front right [mm] + title(ax1, "Heave Front [mm]") + plot(ax1, pltData.xAxis(tr,:),pltData.damperHeaveFront_mm(tr,:)) + % plot 2: position roll front [mm] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") - title(ax2, "Damper Position Front right [mm]") - plot(ax2, pltData.xAxis(start:stop),pltData.damper_FR_mm(start:stop)) - % plot 3: position rear left [mm] + title(ax2, "Roll Front [mm]") + plot(ax2, pltData.xAxis(tr,:),pltData.damperRollFront_mm(tr,:)) + % plot 3: position heave front [mm] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") - title(ax3, "Damper Position Rear left [mm]") - plot(ax3, pltData.xAxis(start:stop),pltData.damper_RL_mm(start:stop)) - % plot 4: position rear right [mm] + title(ax3, "Heave Rear [mm]") + plot(ax3, pltData.xAxis(tr,:),pltData.damperHeaveRear_mm(tr,:)) + % plot 4: position roll front [mm] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") - title(ax4, "Damper Position Rear right [mm]") - plot(ax4, pltData.xAxis(start:stop),pltData.damper_RR_mm(start:stop)) + title(ax4, "Roll Rear [mm]") + plot(ax4, pltData.xAxis(tr,:),pltData.damperRollRear_mm(tr,:)) linkaxes([ax1, ax2, ax3, ax4],"x") % return null (not relevant for plots!) diff --git a/season/FT25/plot_settings/plot_suspension_velocities.m b/season/FT25/plot_settings/plot_suspension_velocities.m index 221bb41..fbace10 100644 --- a/season/FT25/plot_settings/plot_suspension_velocities.m +++ b/season/FT25/plot_settings/plot_suspension_velocities.m @@ -1,30 +1,30 @@ -function [outputArg] = plot_suspension_velocities(panel, start, stop, pltData) +function [outputArg] = plot_suspension_velocities(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"vertical"); - % plot 1: velocity front left [mm/s] + % plot 1: velocity heave front [mm/s] ax1 = nexttile(tl); hold(ax1, "on") grid(ax1, "on") - title(ax1, "Damper Front Left Velocity [mm/s] !!!check sortdata calculation!!!") - plot(ax1, pltData.xAxis(start:stop), pltData.velocity_FL_mmps(start:stop)) - % plot 2: velocity front right [mm/s] + title(ax1, "Heave Front [mm/s]") + plot(ax1, pltData.xAxis(tr,:), pltData.velocityHeaveFront_mmps(tr,:)) + % plot 2: velocity roll front [mm/s] ax2 = nexttile(tl); hold(ax2, "on") grid(ax2, "on") - title(ax2, "Damper Front Right Velocity [mm/s]") - plot(ax2, pltData.xAxis(start:stop), pltData.velocity_FR_mmps(start:stop)) - % plot 3: velocity rear left [mm/s] + title(ax2, "Roll Front [mm/s]") + plot(ax2, pltData.xAxis(tr,:), pltData.velocityRollFront_mmps(tr,:)) + % plot 3: velocity heave front [mm/s] ax3 = nexttile(tl); hold(ax3, "on") grid(ax3, "on") - title(ax3, "Damper Rear Left Velocity [mm/s]") - plot(ax3, pltData.xAxis(start:stop), pltData.velocity_RL_mmps(start:stop)) - % plot 4: velocity rear right [mm/s] + title(ax3, "Heave Rear [mm/s]") + plot(ax3, pltData.xAxis(tr,:), pltData.velocityHeaveRear_mmps(tr,:)) + % plot 4: velocity roll front [mm/s] ax4 = nexttile(tl); hold(ax4, "on") grid(ax4, "on") - title(ax4, "Damper Rear Right Velocity [mm/s]") - plot(ax4, pltData.xAxis(start:stop), pltData.velocity_RR_mmps(start:stop)) + title(ax4, "Roll Rear [mm/s]") + plot(ax4, pltData.xAxis(tr,:), pltData.velocityRollRear_mmps(tr,:)) linkaxes([ax1, ax2, ax3, ax4],"x") % return null (not relevant for plots!) diff --git a/season/FT25/plot_settings/plot_tires_firctionCircle.m b/season/FT25/plot_settings/plot_tires_firctionCircle.m index ef2830c..49d45eb 100644 --- a/season/FT25/plot_settings/plot_tires_firctionCircle.m +++ b/season/FT25/plot_settings/plot_tires_firctionCircle.m @@ -1,4 +1,4 @@ -function [outputArg] = plot_tires_firctionCircle(panel, start, stop, pltData) +function [outputArg] = plot_tires_firctionCircle(panel, pltData, tr) % create tiledlayout (R2023a and newer) tl = tiledlayout(panel,"flow"); @@ -10,10 +10,20 @@ function [outputArg] = plot_tires_firctionCircle(panel, start, stop, pltData) ylabel(ax1, "Longitudinal Acc [g]") xlabel(ax1, "Lateral Acc [g]") colors = colororder(ax1); - plot(ax1,pltData.acc_lat_g(start:stop), pltData.acc_long_g(start:stop),"Color",colors(i,:)) - K = convhull(pltData.acc_lat_g(start:stop), pltData.acc_long_g(start:stop)); - plot(ax1,pltData.acc_lat_g(K), pltData.acc_long_g(K),"Color",colors(i,:),"LineStyle","--","LineWidth",2) + % old code for reference + % for i = 1:length(selected_laps) + % plot(ax1,pltData(selected_laps(i)).acc_lat_g, ... + % pltData(selected_laps(i)).acc_long_g,"Color",colors(i,:)) + % K = convhull(pltData(selected_laps(i)).acc_lat_g, pltData(selected_laps(i)).acc_long_g); + % plot(ax1,pltData(selected_laps(i)).acc_lat_g(K), ... + % pltData(selected_laps(i)).acc_long_g(K),"Color",colors(i,:),"LineStyle","--","LineWidth",2) + % end + + + plot(ax1,pltData.acc_lat_g(tr,:), pltData.acc_long_g(tr,:)) + K = convhull(pltData.acc_lat_g(tr,:), pltData.acc_long_g(tr,:)); + plot(ax1,pltData.acc_lat_g(K), pltData.acc_long_g(K)) % return null (not relevant for plots!) outputArg = []; end diff --git a/season/FT25/plot_settings/sidebar_stats.m b/season/FT25/plot_settings/sidebar_stats.m index 018b9b8..6a9b450 100644 --- a/season/FT25/plot_settings/sidebar_stats.m +++ b/season/FT25/plot_settings/sidebar_stats.m @@ -1,4 +1,4 @@ -function [sidebarLabel] = sidebar_stats(pltData) +function [sidebarLabel] = sidebar_stats(stats) %SIDEBAR_STATS Summary of this function goes here % Detailed explanation goes here sidebarLabel = sprintf(... @@ -9,13 +9,13 @@ function [sidebarLabel] = sidebar_stats(pltData) " Peak (mean): %1.f kW\n" + ... "\nDistance: %.2f km\n" + ... "\nTopspeed: %.1f km/h\n", ... - pltData.energy_used_kwh, ... - pltData.energy_regen_kwh, ... - pltData.energy_kwh, ... - pltData.peakPower_kw, ... - pltData.peakPowerMean_kw, ... - pltData.distanceTotal_km, ... - pltData.maxSpeed_kph ... + stats.energy_used_kwh, ... + stats.energy_regen_kwh, ... + stats.energy_kwh, ... + stats.peakPower_kw, ... + stats.peakPowerMean_kw, ... + stats.distanceTotal_km, ... + stats.maxSpeed_kph ... ); end