%                             Report (1)
%                       Eng. Samy Elsakhawy


% This program solves problem (9) sheet (1) communication systems ,
% BY: Sherif Rofael , 3rd year comm. and electronics , sec :3

% Note : you can change any of the problem inputs (givens).

% please download this program from the link:
% http://vbsherif.members.easyspace.com/comm/comm.zip
clc
clear
si=10^-8 ;
k=1.38*10^-23;
kb=1.288*10^-12;
snro=50;
Ta=77.7;
G=100;
stages=3;

choice1=input('Si= -50 dbm , would u like to change it? (y/n)','s');
if choice1=='y'
    choice=menu('In "nano Watts" or "Dbm" ?' ,'Nano Watts','Dbm');
        if choice==1 
            si=input('Input "Si" in "nano watts = watt *10^-9" ? Si=');
            si=si*10^-9;
        end
        if choice==2 
            si=input('Input "Si" in "dbm" ? Si=');
            si=(10^(si/10))*10^-3;
        end
end

choice2=input('SNRo= 17 db = 50 (ratio), would u like to change it? (y/n)','s');
if choice2=='y'
    choice=menu('In "ratio" or "Db" ?' ,'ratio','Db');
        if choice==1 
            snro=input('Input "SNRo" as ratio ? SNRo=');
        end
        if choice==2 
            snro=input('Input "SNRo" in "db" ? SNRo=');
            snro=(10^(snro/10));
        end
end

choice3=input('KB=1.288*10^-12 W/K , would u like to change it? (y/n)','s');
if choice3=='y'
    choice=menu('What will be your input ?' ,'KB','B');
        if choice==1 
            kb=input('Input "KB" in W/K ? KB=');
        end
        if choice==2 
            b=input('Input "B" in "HZ" ? B=');
            kb=b*k;
        end
end

choice4=input('Ta=77.7 K , would u like to change it? (y/n)','s');
if choice4=='y'
    Ta=input('Input "Ta" in "Kelvins" ? Ta=');
end

choice5=input('No. of stages= 3  , would u like to change it? (y/n)','s');
if choice5=='y'
    stages=input('Input "No. of stages" ? No. of stages=');
end

choice6=input('G=100 (ratio) = 20 db , would u like to change it? (y/n)','s');
if choice6=='y'
    choice=menu('I want to input G in ......' ,'Ratio','db');
        if choice==1 
            G=input('Input "G" in Ratio ? G=');
        end
        if choice==2 
            G=input('Input "G" in "db" ? G=');
            G=10^(G/10);
        end
end
si
snro;
Ta;
kb
Teq=(si/(snro*kb))-Ta;
Teq;
Feq=1+(Teq/300);
stages;
G;
co=1;

for i=1:stages
    m=G^-i;
    co=co+(m);
    con=m;
end
f=(Feq-con)/co;
if f<1 
    msgbox ('error occured , Si < (Si)min for the given SNRo !!! , which leads to F<1 ' , 'Error in o/p Noise Figure' ,'error')
end
    
F_noise_figure_of_each_stage=f
op= '  Ta       Teq          G      stages      Feq     F_noise_figure_of_each_stage '
x=[Ta Teq G stages Feq F_noise_figure_of_each_stage]
