Próbkowanie, błędne wartości wynikowe

Próbkowanie, błędne wartości wynikowe
  • Rejestracja: dni
  • Ostatnio: dni
0

Dlaczego wszystkie wartości wynikowe są równe, gdzie jest błąd w kodzie? x(0) powinno być równe x(1), ale reszta powinna być już inna.

Kopiuj
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    signed long double PI=3.1416;
    for(int i=0;i<8;i++)
    {
        signed long double tmp=sin(2*PI*1000*i*(1/8000))+0.5*sin(2*PI*2000*i*(1/8000)+(3*PI/4));
        cout << "x(" << i << ") = " << tmp << "\n";
    }
    cout << "\n";
    return 0;
}

http://ideone.com/lj5eDX

  • Rejestracja: dni
  • Ostatnio: dni
0

Kod mi się pomylił, o ten chodzi, przepraszam:

Kopiuj
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    float PI=3.1416;
    for(int i=0;i<8;i++)
    {
        float tmp=sin(2*PI*1000*i*(1/8000))+0.5*sin(2*PI*2000*i*(1/8000)+(3*PI/4));
        cout << "x(" << i << ") = " << tmp << "\n";
    }
    cout << "\n";
    return 0;
}
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

1/8000 = 0
Jak chcesz dzielic zmiennoprzecinkowo to przynajmniej jeden operand musi być zmiennoprzecinkowy -> na przykład 1.0/8000

  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki, muszę zacząć czytać dokumentację, bo w książce tego nie było :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.