• [TABLE='width: 628']

    [tr][td]


    Hallo Leute,

    ich habe ein kleines Problem bei einer Aufgabe.
    Die Aufgabe lautet folgendermaßen:
    1.)Die Codewörter (z.B. 110 / 001 etc.) sollen in Vektoren abgebildet werden, wobei die logische 1 auf +1 und die logische 0 auf -1 abgebildet werden soll.
    2.)Danach soll das Kanalrauschen elementweise mit einzulesender Rauschleistung dazu addiert werden.
    3.)Dann wird jede positive Zahl auf 1 und jede negative Zahl auf 0 abgebildet.

    Den ersten und dritten Teil habe ich geschafft aber bei dem zweiten Teil komme ich nicht weiter:

    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;
    }


    }

    [/td][/tr]


    [/TABLE]

  • rand() liefert eine gleichverteilte Zufallsvariable.
    Du braucht hingegen eine normalverteile Zufallsvariable. Musst schauen welche Funktionalität es dafür in deiner Programmiersprache gibt, in C++ ist das z.B. std::normal_distribution<double>.

    Übrigens liefert der Ausdruck analogNoise>0 bereits einen Wert des Datentyps [I]bool, somit kann man deine letzten Zeilen zu einer einzigen zusammenfassen: fehlerwort[i] = analogNoise[i]>0;

    2 Mal editiert, zuletzt von stackoverflow (24. Januar 2016 um 20:06)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!