V Programu jsou vytvořeny funkce, které se zavolají s příslušnými parametry a následně nám vrátí požadované data, které lze přímo vykreslit do grafu. Je zde soubor AM_DSB_SSB, který obsahuje funke :

-          public PointPairList ModulacniSignal(Data data)

-          public PointPairList PasmovySignal(TypModulaceAM typModulace, Data data)

-          public PointPairList AmplitudoveSpektrum(TypModulaceAM typModulace, Data data, SignalProSpektrum signalSelect))

-          public PointPairList FazoveSpektrum(TypModulaceAM typModulace, Data data, SignalProSpektrum signalSelect)

-          public PointPairList VykonoveSpektrum(TypModulaceAM typModulace, Data dat, SignalProSpektrum signalSelect)

kde :

public enum TypModulaceAM

 {

        AM = 0,

        DSB_SC,

        USSB_SC,

        LSSB_SC

 

}

 

// Freq_mod – frekvence modulacniho signalu

// DC_mod – stejnosmerna hodnota modulacniho signalu

// Ampl_mod – amplituda modulacniho signalu

// TypSig_mod – typ modulacniho signalu (sin, cos)

// Freq_pasm – frekvence pasmoveho signalu

// fvz – vzorkovaci frekvence

// period – perioda zobrazeneho signalu

// time – cas zobrazeneho signalu

public Data(int Freq_mod, int DC_mod, int Ampl_mod, TypSignalu TypSig_mod, int Freq_pasm, int fvz, int period, int time)

 

 

//Generovani modulacniho signalu

for (float i = 0; i < Math.Round((lenght - deltat), zaokrouhleni); i = (float)Math.Round(i + deltat, zaokrouhleni))

{

     if (Data.TypSignalu.sin == data.TypSig_mod)

          y = data.DC_mod + data.Ampl_mod * Math.Sin((float)i * 2 * Math.PI * data.Freq_mod);

     else //jinak je cos

          y = data.DC_mod + data.Ampl_mod * Math.Cos((float)i * 2 * Math.PI * data.Freq_mod);

}

 

 

//Generovani pasmoveho signalu

for (float k = 0; k < meze; k++, i += deltat)

{

        if (Data.TypSignalu.sin == data.TypSig_mod)

        {

                if (typModulace == TypModulaceAM.AM)

                        y = 1 + (data.DC_mod + data.Ampl_mod * Math.Sin((float)i * 2 * Math.PI * data.Freq_mod));

                else if (typModulace == TypModulaceAM.DSB_SC)

                        y = (data.DC_mod + data.Ampl_mod * Math.Sin((float)i * 2 * Math.PI * data.Freq_mod));

                else //ssb

                {

                        Complex pomoc = new Complex();

                        cm.Re = (data.DC_mod + data.Ampl_mod * Math.Sin((float)i * 2 * Math.PI * data.Freq_mod));

                        cm.Im = (data.DC_mod + data.Ampl_mod * Math.Cos((float)i * 2 * Math.PI * data.Freq_mod));

                        pomoc.Im = Math.Sin((float)i * 2 * Math.PI * data.Freq_pasm);

                        if (typModulace == TypModulaceAM.LSSB_SC)

                               y = (cm.Re * pomoc.Re) - (cm.Im * pomoc.Im);

                        else y = (cm.Re * pomoc.Re) + (cm.Im * pomoc.Im);

                }

        }

        else  //jinak je cos

        {

                if (typModulace == TypModulaceAM.AM)

                        y = 1 + (data.DC_mod + data.Ampl_mod * Math.Cos((float)i * 2 * Math.PI * data.Freq_mod));

                else if (typModulace == TypModulaceAM.DSB_SC)

                        y = (data.DC_mod + data.Ampl_mod * Math.Cos((float)i * 2 * Math.PI * data.Freq_mod));

                else //ssb

                {

                        Complex pomoc = new Complex();

                        cm.Re = (data.DC_mod + data.Ampl_mod * Math.Cos((float)i * 2 * Math.PI * data.Freq_mod));

                        cm.Im = (data.DC_mod + data.Ampl_mod * Math.Sin((float)i * 2 * Math.PI * data.Freq_mod));

                        pomoc.Re = Math.Cos((float)i * 2 * Math.PI * data.Freq_pasm);

                        pomoc.Im = Math.Sin((float)i * 2 * Math.PI * data.Freq_pasm);

                        if(typModulace == TypModulaceAM.LSSB_SC)

                               y = (cm.Re * pomoc.Re) - (cm.Im * pomoc.Im);

                        else y = (cm.Re * pomoc.Re) + (cm.Im * pomoc.Im);

                }

        }

        if( (typModulace != TypModulaceAM.LSSB_SC) && (typModulace != TypModulaceAM.USSB_SC))

                y = y * Math.Cos((float)i * 2 * Math.PI * data.Freq_pasm);

}

 

//Ve spektrech je nejprve osetreno rozliseni vypoctu, nasledne je provedena Fourierova transformace a fftshift

//Amplitudove spektrum

vrat.Add(((double)(k[i] * data.Fvz) / sig.Count), fourierData.MagnitudeDot(fftdata[i]) / fourierData.dataDFT.Length);

 

//Fazove spektrum

if ((fourierData.MagnitudeDot(fftdata[i])/fourierData.dataDFT.Length < 0.01))

{

        fftdata[i].Real = 0;

        fftdata[i].Imag = 0;

}

vrat.Add(((double)(k[i] * data.Fvz) / sig.Count), fourierData.PhaseDot(fftdata[i]));

 

//Vykonove spektrum

vrat.Add(((double)(k[i] * data.Fvz) / sig.Count), fourierData.PowerDot(fftdata[i]));

 

 

Pro zobrazení písmen řeské abecedy byla vytořeny funkce :

-          ReckceZnaky.Velke

-          ReckceZnaky.Male