distrib.m

来自「本函数计算一个大区域上的信号干扰分布情况。」· M 代码 · 共 79 行

M
79
字号
%(论文)这个程序的功能是在已知了几个原有用户位置的情况下,计算考察频点在区域上的分布(自由空间传播模型)
%lo表示原有用户的位置信息
%p_f行表示原有用户,列表示考察频段
function distrib(lo,p_f)   
LoN=size(lo,1);   
D=6e3;               %区域半径
fs=1e9;
f0=4e8;             %初始频率
B=2e5;                %考察小频段为200K
% deltf=fs/(2.^16);
span=50;
Q=zeros(2*D/span+1,2*D/span+1);
% k=1;
% 
% %     A=(sqrt((x-lo(1,1)).^2+(y-lo(1,2)).^2))>2e1;
% %     for i=2:LoN
% %         B=(sqrt((x-lo(i,1)).^2+(y-lo(i,2)).^2))>2e1;
% %         A=A&B;
% %     end
    for x=-D:span:D
        for y=-D:span:D
            for n=1:LoN
                 if((x~=lo(n,1))&(y~=lo(n,2)))
%                      am=(1.1*log10((f0+k*B)/1e6)-0.7)*3-(1.56*log10((f0+k*B)/1e6)-0.8);                    
%                      Lm((x+D)/100+1,(y+D)/100+1)=69.55+26.16*log10((f0+k*B)/1e6)-13.82*2-am...
%                          +(44.9-6.55*2)*log10(((sqrt((x-lo(n,1)).^2+(y-lo(n,2)).^2)))/1000);
%                      Lm((x+D)/100+1,(y+D)/100+1)=10.^(Lm((x+D)/100+1,(y+D)/100+1)/10);
%                      P((x+D)/100+1,(y+D)/100+1,n)=p_f(n,k)./Lm((x+D)/100+1,(y+D)/100+1);
                         P((x+D)/span+1,(y+D)/span+1,n)=p_f(n)*(3e8/4/pi).^2/((lo(n,1)-x)^2+(lo(n,2)-y)^2)/(f0^2);
                 else
%                      am=(1.1*log10((f0+k*B)/1e6)-0.7)*3-(1.56*log10((f0+k*B)/1e6)-0.8);                    
%                      Lm((x+D)/span+1,(y+D)/100+1)=69.55+26.16*log10((f0+k*B)/1e6)-13.82*2-am...
%                          +(44.9-6.55*2)*log10(((sqrt((x+10-lo(n,1)).^2+(y+10-lo(n,2)).^2))+100)/1000);  %+90是为了不使log函数的参数为0
%                      Lm((x+D)/100+1,(y+D)/100+1)=10.^(Lm((x+D)/100+1,(y+D)/100+1)/10);
%                      P((x+D)/100+1,(y+D)/100+1,n)=p_f(n,k)./Lm((x+D)/100+1,(y+D)/100+1);
                         P((x+D)/span+1,(y+D)/span+1,n)=p_f(n)*(3e8/4/pi).^2/((lo(n,1)-x)^2+(lo(n,2)-y)^2+80)/(f0^2);
%                          P((x+D)/span+1,(y+D)/span+1,n)=P((x+D)/span,(y+D)/span,n)
                 end
            end
        end
    end
    Q=sum(P,3);
    Q=db(Q,'power');
figure;
colormap('gray');
[x,y]=meshgrid(-D:span:D,-D:span:D);
Q=Q';                   %画图时总出现x和y颠倒的问题,不能解决, 
mesh(x,y,Q);       % 故用mesh(y,x,Q)代替mesh(x,y,Q),或用mesh(x,y,Q')代替mesh(x,y,Q)
    xlabel('x');
    ylabel('y');
    zlabel('干扰温度:dB');
%     sum(size(Q))
    Limit=sum(sum(Q))/(size(Q,1)*size(Q,2));
%     Limit
% Limit=-span;
    Dt=zeros(size(Q));
    for i=1:size(Q,1)
        for j=1:size(Q,2)
            if Q(i,j)>=Limit+5
                Dt(i,j)=0;
            elseif Q(i,j)>=Limit
                  Dt(i,j)=1;  
                else Dt(i,j)=2;
            end
        end
    end
    figure;
%     Dt
colormap('gray');
 pcolor(x,y,Dt);
 shading interp;
  xlabel('x');
 ylabel('y');
 title('白色区域:白空,灰色区域:灰空,黑色区域:黑空');
% mesh(x,y,Dt)
% end
    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?