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 PAM, který obsahuje funke :
-
public PointPairList
ModulacniSignal(Data data)
-
public PointPairList[ ] Vzorky (Data data, float sizeUp, float sizeDown)
-
public PointPairList
PAModulation(Data data)
kde :
// Ampl_mod – amplituda signalu
// Freq – frekvence signalu
// typSignalu– typ signalu (sin, cos)
// Ts – počet vzorku na periodu
public Data(int Ampl_mod, int
Freq, TypSignalu
typSignalu, int Ts)
//Generovani modulacniho signalu
float
t = (1.0f / (float)data.Freq1);
double y1 = 0;
for
(float i = 0; i <
t; i += (t / 1000))
{
if(data.typSignalu == TypSignalu.sin)
y1 = data.Ampl_mod * Math.Sin((float)i * 2 * 3.14 * data.Freq1);
else
y1 = data.Ampl_mod * Math.Cos((float)i * 2 * 3.14 *
data.Freq1);
vrat.Add(i,
y1);
}
//Generovani vzorků pro graficke znazorneni
float
t = (1.0f / (float)data.Freq1);
float
t2 = t / data.Ts;
float
dx = 0;
int
index = 0;
for
(float i = 0; i <
t; i += (t / 1000))
{
if
(i > dx)
{
dx += t2;
vrat[index] = new PointPairList();
vrat[index].Add(i, sizeUp);
vrat[index++].Add(i, -sizeDown);
}
}
//Generovani modulovaneho signalu
float
t = (1.0f / (float)data.Freq1);
float
t2 = t / data.Ts;
float
dx = 0;
double y1 = 0;
int
pocetvzorku = 0;
for
(float i = 0; i <
t; i += (t / 1000))
{
if
(i > dx)
{
dx += t2;
if (data.typSignalu
== TypSignalu.sin)
y1 = data.Ampl_mod * Math.Sin((float)i * 2 * 3.14 * data.Freq1);
else y1 = data.Ampl_mod * Math.Cos((float)i * 2 * 3.14 * data.Freq1);
vrat.Add(i, y1);
pocetvzorku
= 0;
}
if (typVzorkovani ==
TypVzorkovani.uniformni)
{
if
(pocetvzorku < 10)
{
pocetvzorku++;
vrat.Add(i, y1);
}
else
vrat.Add(i, 0);
}
else
{
if (pocetvzorku < 10)
{
pocetvzorku++;
if (data.typSignalu
== TypSignalu.sin)
y1 = data.Ampl_mod * Math.Sin((float)i * 2 * 3.14 * data.Freq1);
else y1 = data.Ampl_mod * Math.Cos((float)i * 2 * 3.14 * data.Freq1);
vrat.Add(i, y1);
}
else vrat.Add(i, 0);
}
}