Cześć!
Mam za zadanie napisać program, który będzie generował pewien sygnał, później go zaszumiał, a następnie odszumiał za pomocą mediany (program bierze 5 próbek (1,2,3,4,5), sortuje, wyznacza medianę i jej wartość to pierwszy wynik, następnie kolejne 5 (2,3,4,5,6) itd.) I właśnie z tym ostatnim mam problem. Mam już fragment kodu tej funkcji, ale nie wiem jak go skończyć. (ip to ilość próbek zadawana przez użytkownika)
void wygladzWynikmediana(float *wyniki, int ip)
{
int i = 0;
int u = 0;
FILE *f;
int t = fopen_s(&f, "wynikiwygładzonemediana.csv", "w");
if (ip > 6)
{
for (i = 0; i < ip - 5; ++i)
{
if (wyniki[i] > wyniki[i + 1]);
{
u = wyniki[i+1];
wyniki[i+1] = wyniki[i];
wyniki[i] = u;
}
printf("%d %f\n", i, wyniki[i]);
fprintf(f, "%d; %f\n", i, wyniki[i]);
}
}
fclose(f);
}
wspieram się funkcją którą napisałem wcześniej, która wygładza wyniki za pomocą średniej
void wygladzWynik(float *wyniki, int ip)
{
int i = 0;
FILE *f;
int t = fopen_s(&f, "wynikiwygładzone.csv", "w");
if (ip > 6)
{
for (i = 0; i < ip - 5; ++i)
{
wyniki[i] = wyniki[i] + (wyniki[i + 1] + wyniki[i + 2] + wyniki[i + 3] + wyniki[i + 4]) / 5.0;
printf("%d %f\n", i, wyniki[i]);
fprintf(f, "%d; %f\n", i, wyniki[i]);
}
}
fclose(f);
}
ale to trochę inna zasada działania
Proszę o pomoc z tą medianą