%%%%%%%%%%%%%%%%%%%%%%%%% % Energy Model = Power Model + EnergyBox % Power Model = BaseCost + DataRateCost %%%%%%%%%%%%% % Data %%%%%%%%%%%%%% dchthresh = 1; %%%%%%%%%%%%%%% %% Pings %%%%%%%%%% % -60 dBm %%%%%%%%%% importTrace('Energy_Data/ping60.lvm') power=data; pings60=moving(power,10); %pings60(1800:14000) dch_60_start = find(pings60(3000:5000) > dchthresh,1) + 3000; dch_60_end = find(pings60(7500:14000) < dchthresh,1) + 7500; power_dch_60 = mean(pings60(dch_60_start:dch_60_end)); ping_60_y = power_dch_60; %%%%%%%%%% % -80 dBm %%%%%%%%%% importTrace('Energy_Data/ping80.lvm') power=data; pings80=moving(power,10); %pings80(34000:46500) dch_80_start = find(pings80(35200:37500) > dchthresh,1) + 35200; dch_80_end = find(pings80(39940:43000) < dchthresh,1) + 39940; power_dch_80 = mean(pings80(dch_80_start:dch_80_end)); ping_80_y = power_dch_80; %%%%%%%%%% % -100 dBm %%%%%%%%%% importTrace('Energy_Data/ping100.lvm') power=data; pings100=moving(power,10); % pings100(34000:46500); dch_100_start = find(pings100(35200:38000) > dchthresh,1) + 35200; dch_100_end = find(pings100(39800:42000) < dchthresh,1) + 39800; power_dch_100 = mean(pings100(dch_100_start:dch_100_end)); ping_100_y = power_dch_100; %%%%%%%%%%%% % -50 dBm ping_50_dch_time = 4623; ping_50_fach_time = 7054; ping_50_avg_1 = power_1_dch_50; ping_50_avg_2 = power_2_dch_50; ping_50_avg_3 = power_3_dch_50; ping_50_avg_4 = power_4_dch_50; ping_50_avg_5 = power_5_dch_50; ping_50_mean = (ping_50_avg_1 + ping_50_avg_2 + ping_50_avg_3 + ping_50_avg_4 + ping_50_avg_5) / 5; ping_50_y = [ping_50_avg_1; ping_50_avg_2; ping_50_avg_3; ping_50_avg_4; ping_50_avg_5]; %%%%%%%%%%%%%%% % -70 dBm ping_70_dch_time = 5024; ping_70_fach_time = 5.997200000000000e+03; ping_70_avg_1 = power_1_dch_70; ping_70_avg_2 = power_2_dch_70; ping_70_avg_3 = power_3_dch_70; ping_70_avg_4 = power_4_dch_70; ping_70_avg_5 = power_5_dch_70; ping_70_y = [ping_70_avg_1; ping_70_avg_2; ping_70_avg_3; ping_70_avg_4; ping_70_avg_5]; ping_70_mean = mean(ping_70_y); %%%%%%%%%%%%%%% % -90 dBm ping_90_dch_time = 4.845200000000000e+03; ping_90_fach_time = 6.683400000000000e+03; ping_90_avg_1 = power_1_dch_90; ping_90_avg_2 = power_2_dch_90; ping_90_avg_3 = power_3_dch_90; ping_90_avg_4 = power_4_dch_90; ping_90_avg_5 = power_5_dch_90; ping_90_y = [ping_90_avg_1; ping_90_avg_2; ping_90_avg_3; ping_90_avg_4; ping_90_avg_5]; ping_90_mean = mean(ping_90_y); %%%%%%%%%%%%%%% % -110 dBm ping_110_dch_time = 4704; ping_110_fach_time = 5994; ping_110_avg_1 = power_1_dch_110; ping_110_avg_2 = power_2_dch_110; ping_110_avg_3 = power_3_dch_110; ping_110_avg_4 = power_4_dch_110; ping_110_avg_5 = power_5_dch_110; ping_110_y = [ping_110_avg_1; ping_110_avg_2; ping_110_avg_3; ping_110_avg_4; ping_110_avg_5]; ping_110_mean = mean(ping_110_y); %%%%%%%%%%%%%%% % Averages avg50_ping = mean(ping_50_y); avg60_ping = mean(ping_60_y); avg70_ping = mean(ping_70_y); avg80_ping = mean(ping_80_y); avg90_ping = mean(ping_90_y); avg100_ping = mean(ping_100_y); avg110_ping = mean(ping_110_y); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3rd degree polynomial regression line % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % with Pings all_pings_rss = [-50,-60,-70,-80,-90,-100,-110]; all_pings_power = [... avg50_ping,... avg60_ping,... avg70_ping,... avg80_ping,... avg90_ping,... avg100_ping,... avg110_ping,... ]; figure(55); plot(all_pings_rss,all_pings_power,'o'); %% only many pings avg some_pings_rss = [-50,-70,-90,-110]; some_pings_power = [... avg50_ping,... avg70_ping,... avg90_ping,... avg110_ping,... ]; figure(56); plot(some_pings_rss,some_pings_power,'o'); %%%% % regression 3rd degree p = polyfit(some_pings_rss,some_pings_power,3); t2 = -110:0.1:-50; y2 = polyval(p,t2); figure(57); plot(some_pings_rss,some_pings_power,'o',t2,y2) title('Plot of Data (Points) and Model (Line)') % res = polyval(p,some_pings_power) - some_pings_power; % figure(58); % plot(some_pings_rss,res,'+') % title('Plot of the Residuals') p = polyfit(all_pings_rss,all_pings_power,3); t2 = -110:0.1:-50; y2 = polyval(p,t2); figure(59); plot(all_pings_rss,all_pings_power,'o',t2,y2) title('Plot of Data (Points) and Model (Line)') % % res = polyval(p,all_pings_power) - all_pings_power; % figure(60); % plot(all_pings_power,res,'+') % title('Plot of the Residuals') %%%%%%%%%%%%%%%%%%%%%%% % with data rate %%%%%%%%%%%%%%%%%%%%%%% % all samples rss in order model_rate_rss = [-50,-50,-50,-50,-70,-70,-70,-70,-90,-90,-90,-90,-110,-110,-110,-110]; % all samples average power in dch - tail rate50_power = [rate50_down_unlimited_power,rate50_down_1mbps_power,... rate50_down_100kbps_power,rate50_up_unlimited_power]; rate70_power = [rate70_down_unlimited_power,rate70_down_1mbps_power,... rate70_down_100kbps_power,rate70_up_unlimited_power]; rate90_power = [rate90_down_unlimited_power,rate90_down_1mbps_power,... rate90_down_100kbps_power,rate90_up_unlimited_power]; rate110_power = [rate110_down_unlimited_power,rate110_down_1mbps_power,... rate110_down_100kbps_power,rate110_up_unlimited_power]; model_rate_power = [rate50_power rate70_power rate90_power rate110_power]; %%% get all data rates to_mbps = 8*10^-6; rate50_speeds = [rate50_down_unlimited*to_mbps,rate50_down_1Mbps*to_mbps,... rate50_down_100kbps*to_mbps,rate50_up_unlimited*to_mbps]; rate70_speeds = [rate70_down_unlimited*to_mbps,rate70_down_1Mbps*to_mbps,... rate70_down_100kbps*to_mbps,rate70_up_unlimited*to_mbps]; rate90_speeds = [rate90_down_unlimited*to_mbps,rate90_down_1Mbps*to_mbps,... rate90_down_100kbps*to_mbps,rate90_up_unlimited*to_mbps]; rate110_speeds = [rate110_down_unlimited*to_mbps,rate110_down_1Mbps*to_mbps,... rate110_down_100kbps*to_mbps,rate110_up_unlimited*to_mbps]; rate110_speeds_no_up = [rate110_down_unlimited*to_mbps,rate110_down_1Mbps*to_mbps,... rate110_down_100kbps*to_mbps]; model_rate_speed = [rate50_speeds rate70_speeds rate90_speeds rate110_speeds]; %%%%%%%%%% % rate_model_rss = [-50,-70,-90,-110]; unlimited_down_power = [rate50_down_unlimited_power,rate70_down_unlimited_power,rate90_down_unlimited_power,rate110_down_unlimited_power]; unlimited_down_speed = [rate50_down_unlimited*to_mbps,rate70_down_unlimited*to_mbps,rate90_down_unlimited*to_mbps,rate110_down_unlimited*to_mbps]; unlimited_up_power = [rate50_up_unlimited_power,rate70_up_unlimited_power,rate90_up_unlimited_power,rate110_up_unlimited_power]; unlimited_up_speed = [rate50_up_unlimited*to_mbps,rate70_up_unlimited*to_mbps,rate90_up_unlimited*to_mbps,rate110_up_unlimited*to_mbps]; mbps_down_power = [rate50_down_1mbps_power,rate70_down_1mbps_power,... rate90_down_1mbps_power,rate110_down_1mbps_power]; kbps_down_power = [rate50_down_100kbps_power,rate70_down_100kbps_power,... rate90_down_100kbps_power,rate110_down_100kbps_power];