
function [total_ch_cap, avg_ch_cap] = mk_sim_rdpwr(num_link)
    x_cir = 0;      % 원의 중심 x좌표
    y_cir = 0;      % 원의 중심 y좌표
    r_cir = 3000;   % 반경 3km 지름은 6km 로 가정한다.
    
    % 2차원 원만 표시하기위해 z축은 생략
    % 원주에 200개의 점이 찍힌다.
    [x_field,y_field] = cylinder(r_cir, 200);

    %figure2 이라는 창 생성
    figure(2)
    subplot(2,2,[1,3]);

    % x(1,:) : 1행, 모든열에 엑세스.
    % x(1,:)+x1 : x1만큼 점들을 평행이동
    % hold on : 기존에 그렸던 선들을 유지
    % gird on : grid 선 표시 grid : 바둑판 모양의 선들
    plot(x_field(1,:)+x_cir,y_field(1,:)+y_cir,'b','LineWidth',2);
    hold on, grid on;

    seta_rcvr = 2*pi*rand(1, num_link);           % 랜덤한 각 n개 생성
    r_rcvr = sqrt(rand(1, num_link));             % 랜덤한 반지름 n개 생성
    x_rcvr = r_cir.*r_rcvr.*cos(seta_rcvr)+x_cir; % 리시버 x좌표 생성
    y_rcvr = r_cir.*r_rcvr.*sin(seta_rcvr)+y_cir; % 리시버 y좌표 생성
    plot(x_rcvr, y_rcvr, "*r");
    
    r_rcvr_cir = 100; % 리시버를 중심으로 트랜시버는 반지름 100만큼 떨어져있음
    num_dot = 20;

    [x_rcvr_bnd,y_rcvr_bnd] = cylinder(r_rcvr_cir, num_dot);
    
    x_rcvr_cir = zeros(1, (num_dot+1)*num_link);    % 리시버를 중심으로한 원의 x좌표
    y_rcvr_cir = zeros(1, (num_dot+1)*num_link);    % 리시버를 중심으로한 원의 y좌표

    for i = 1:1:num_link
        x_rcvr_cir(1, (num_dot+1)*(i-1) + 1 : (num_dot+1)*i) = x_rcvr_bnd(1,:) + x_rcvr(1,i);
        y_rcvr_cir(1, (num_dot+1)*(i-1) + 1 : (num_dot+1)*i) = y_rcvr_bnd(1,:) + y_rcvr(1,i);
    end

    plot(x_rcvr_cir, y_rcvr_cir, '.black', 'LineWidth', 0.1);

    seta_tcvr = 2*pi*rand(1, num_link);                 % 랜덤한 각 n개 생성
    r_tcvr = sqrt(rand(1, num_link));                   % 랜덤한 반지름 n개 생성
    x_tcvr = r_rcvr_cir.*r_tcvr.*cos(seta_tcvr)+x_rcvr; % 트랜시버 x좌표 생성
    y_tcvr = r_rcvr_cir.*r_tcvr.*sin(seta_tcvr)+y_rcvr; % 트랜시버 y좌표 생성
    
    plot(x_tcvr, y_tcvr, '*g');

    x_rcvr_tran =  x_rcvr.';    % 전치연산자 .'
    y_rcvr_tran =  y_rcvr.';    % 전치연산자 .'

    dis_x = x_rcvr_tran - x_tcvr;       % 리시버와 트랜시버 거리 x좌표
    dis_y = y_rcvr_tran - y_tcvr;       % 리시버와 트랜시버 거리 y좌표
    dis = sqrt(dis_x.^2 + dis_y.^2);    % 리시버와 트랜시버 거리
    dis_factor = 3;                     % path loss exponent : 도심환경에서 2.7 ~ 3.5

    noise = 4e-21*2000e6;               % 노이즈 N0

    path_loss = dis.^(-dis_factor);     % 경로손실모델

    h = sqrt((1/2))*(randn(num_link, num_link) + 1i*randn(num_link, num_link)); % 레이시안 채널 - 리시버 트랜시버 마다 형성
    h_abs = abs(h).^2;          % 레이시안 채널 절댓값 제곱
    h_total = path_loss.*h_abs; % path loss를 포함한 채널 모델

    cap = zeros(num_link,1);    % 채널 용량
    
    pwr_tcvr = abs(2.*rand(1, num_link));   % 0~2사이의 랜덤한 송신기 파워 생성

    for i = 1:1:num_link
        cap(i,1) = log2(1+(h_total(i,i)*pwr_tcvr(1,i))/((sum(h_total(i,:).*pwr_tcvr)-h_total(i,i)*pwr_tcvr(1,i))+noise));
    end
    
    total_cap = sum(cap); % 총 수신기의 채널용량
    avg_cap = mean(cap); % 각각의 수신기의 채널용량의 평균
    
    total_ch_cap = total_cap;
    avg_ch_cap = avg_cap;

    hold off
end