📄 ble_csma_test.m
字号:
clear;% Unit time for random backoffunit_backoff=1*(10^-3); % (1) msec% Probability of Idle channel upon clear channel accessementch_idle_prob=0.5;ch_busy_prob=1-ch_idle_prob;avg_sample=100000;for h=1:15 % Maximum number of random backoff for channel busy max_backoff_num=h; P(h)=max_backoff_num; for u=1:avg_sample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Compute thoretical listening time %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if ch_idle_prob~=0.5 A=2*(1-(2*ch_busy_prob)^max_backoff_num)... *(1-ch_busy_prob)/(1-2*ch_busy_prob)-(1-(ch_busy_prob)^max_backoff_num); B=(ch_busy_prob^max_backoff_num)*(2^max_backoff_num-1); % Theoretical avg_listen_delay avg_listen_delay=unit_backoff*(A+B); else avg_listen_delay=unit_backoff*((max_backoff_num-1)+(0.5^(max_backoff_num))*(max_backoff_num+1) ); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Simulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Simulation avg_listen_delay avg_listen_delay_simul=0; % Length of backoff for each trial len_backoff=0; backoff_listen_energy=0; Is_channel_IDLE=0; m=1; i=1; while (Is_channel_IDLE==0) % Binary Exponentail Backoff len_backoff=unit_backoff*uniform_gen(0,2^m); len_backoff_log(i)=len_backoff; i=i+1; % Update avg_listen_delay_simul=avg_listen_delay_simul+len_backoff; % Channel access (Busy or Idle) Is_channel_IDLE=bern_gen(ch_idle_prob); m=m+1; % If number of backoff exceed the maximum number of backoff, % then stop and report channel failure if(m> max_backoff_num) break; end end avg_listen_delay_simul_log(u)=avg_listen_delay_simul; end disp(['simul: ',num2str(mean(avg_listen_delay_simul_log))]); disp(['thy: ',num2str(avg_listen_delay)]); mean_num_thy(h)=avg_listen_delay; mean_num_sim(h)=mean(avg_listen_delay_simul_log); mean_num_std(h)=std(avg_listen_delay_simul_log); U(h)=max(avg_listen_delay_simul_log); L(h)=min(avg_listen_delay_simul_log);endh2=plot( (P),mean_num_sim,'b',(P),mean_num_thy,'.-r');set(gca,'FontSize',18);xlabel('The maximum number of backoff, P');ylabel('Average listening delay, L(sec)');% h1=errorbar((P),mean_num_sim, L,U,'+');% hold on;% h2=plot( (P),mean_num_sim);% set(gca,'FontSize',18);% xlabel('The maximum number of backoff, P');% ylabel('Average listening delay, L(sec)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -