Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Technische Informatik » Gaussverteilung » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
Hannibal

Vielen lieben Dank eulerscheZahl.
eulerscheZahl

Stelle mal den kompletten Code rein. Wenn es eine Datei ist, dann bitte in [code]...[/code], bei mehr als .zip.

edit: per PN geklärt.
Hannibal

Eingabe und Ausgabe:

Bitte geben Sie eine Rauschlesitung rauschl ein:
10

Absolute Fehler: 38 Relative Fehler: 57.5758

Das hier ist das empfangswort:
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3

und das hier die quantisierte folge:
-0.374621 -0.374621 -0.374621 -0.374621 -0.374621 -0.374621 -0.374621 -0.374621
-0.374621 -0.374621 -0.374621 -0.374621 -0.374621 -0.374621 -0.374621 -0.374621
-0.374621 -0.374621 -0.374621 -0.374621 -0.374621 -0.374621

SNR in dB: -0.336012dB
SNR pro Bit: -0.112004

Die Berechnung der absoluten und relativen Fehler sowie des SNRs stimmen, da ich diese schon bei einer anderen Aufgabe überprüft habe.

und nochmals vielen dank für deine hilfe.
eulerscheZahl

du solltest rausch vielleicht vor der Schleife noch auf 0 setzen, sonst hast du noch das alte Rauschen zusätzlich mit drin.
Wenn das nicht hilft, brauche ich mehr als ein "ganz komische werte", nämlich Eingabe, Ausgabe und erwartete Ausgabe.
Hannibal

ich habe es jetzt getestet, leider kommen ganz komische werte beim empfangswert bzw bei der berechnung der absoluten und relativen fehler.

sieht jetzt wie folgt aus:

for (int i = 0; i < nN*nBit; i++)
{
if (sendewort6[i] == true)
{
analog[i] = 1.0;
}

else
{
analog[i] = -1.0;
}

for (int a = 0; a < 12; a++)
{
rausch = rausch + ((((float)rand()) / RAND_MAX) - 0.5);
}

analogNoise[i] = analog[i] + (rausch*rauschl);

if (analogNoise[i]>0)
{
fehlerwort[i] = true;
}

else
{
fehlerwort[i] = false;
}


}
Hannibal

Ach so.
Das heißt ich müsste es in die zweite for schleife mit rein nehmen:

for (int i = 0; i<nN*nBit; i++)
{
//hier zum beispiel
analogNoise[i] = analog[i] + (rausch*rauschl);



vielen dank eulerscheZahl
eulerscheZahl

Wie ich vermutete: du addierst eine Konstante.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
for (int i = 0; i < 12; i++)
{
	rausch = rausch + (float)((rand() / RAND_MAX) - 0.5); //zur Division zweier ints hatte ich mich schon geäußert.
}
//rausch hat jetzt immer den gleichen Wert, rausch*rauschl ist konstant
for (int i = 0; i<nN*nBit; i++)
{
	analogNoise[i] = analog[i] + (rausch*rauschl);
	//...
}
Hannibal

float* analog = new float[nN*nBit];
float* analogNoise = new float[nN*nBit];
float* quant = new float[nN];
float rausch = 0.;
float rauschl = 0.;

cout << "rauschlesitung:" << endl;
cin >> rauschl;
cout << endl;

for (int i = 0; i < nN*nBit; i++)
{
if (sendewort6[i] == true)
{
analog[i] = 1.0;
}

else
{
analog[i] = -1.0;
}
}


for (int i = 0; i < 12; i++)
{
rausch = rausch + (float)((rand() / RAND_MAX) - 0.5);
}

for (int i = 0; i<nN*nBit; i++)
{
analogNoise[i] = analog[i] + (rausch*rauschl);

if (analogNoise[i]>0)
{
fehlerwort[i] = true;
}

else
{
fehlerwort[i] = false;
}
}

so sieht das ganze aus eulerscheZahl.
eulerscheZahl

Die Frage ist, wo du rausch berechnest und wo die es zuweist.
Wenn du es erst berechnest und dann jedem Wert zuweist, ist der Zufallseffekt dahin. In jedem Schleifendurchlauf muss der Rauschwert deshalb neu bestimmt werden.
Hannibal

Vielen Dank für die schnelle Antwort eulerscheZahl.

Ich werde das aufjedenfall versuchen.
Ich hatte das so gemacht gehabt:

for (int i = 0; i<nN*nBit; i++)
{
analogNoise[i] = analog[i] + (rausch*rauschl);

if (analogNoise[i]>0)
{
fehlerwort[i] = true;
}

else
{
fehlerwort[i] = false;
}
}

weiss nicht ob das richtig ist, aber mann muss es ja noch mit der rauschleistung multiplizieren.
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.