Matematyczne funkcje w tablicach dwuwymiarowych

Matematyczne funkcje w tablicach dwuwymiarowych
K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 77
0

Napisałem program, który generuje sygnał w postaci M składowych sinusoidalnych. Wszystko pięknie działa, program sam generuje sobie "składniki " sinusa wedle wczesniej zadanego algorytmu, który sprawdziłem idziała. Jedynym problemem jest wygenerowanie juz tablicy dwuwymiarowej, gdzie przypisuje się wartosci. Kazda kolumna to po prostu ten sam sinus zalezy od roznczego czasu, a kazdy wiersz to rozny sinus zalezny od tego samego czasu.

Ogólnie problem mam w tym miejscu:

Kopiuj
sinus=(float**)malloc(o*sizeof(float *));
            for(i=0; i<o; i++)
            sinus[i]=(float*)malloc(M*sizeof(float));
            sinus1(A,phi,f,sinus,czas,M,o) ;
            drukuj(sinus,M,o) ;

i procedura sinus1:

Kopiuj
void sinus1(float *A, float *phi, float *f, float **sinus, float *czas, int M, int p)
{  
    int i,j;

    for(j=0; j<p  ; i++)
        for(i=0; i<M  ; i++)
            sinus[i][j] = A[i]*sin(2*M_PI*(czas[j])*f[i]+phi[i]) ;
    printf("%f", sinus[i][j]) ;

}

Program przestaje sie odzywac po fukcji sinus1 :(

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 77
0

tego printf("%f", sinus[i][j]) ; dalem zeby miec pewnosc, czy program dziala w tym miejscu. Nie jest potrzebny w zadnym innym wypadku.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 192
0

W deklaracji sinus1 powinieneś mieć

Kopiuj
float **

a nie

Kopiuj
float *
K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 77
0

@kapojot nie rozumiem :(

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 32
0
Kopiuj
for(j=0; j<p  ; i++)
        for(i=0; i<M  ; i++)

Nie powinno być ?

Kopiuj
for(j=0; j<p  ; j++)
        for(i=0; i<M  ; i++)
K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 77
0

Racja, to już sprawdziłem, poprawiłem. Jest spoko, tylko przypisuje mi teraz do tablicy jakies bezsensowne wyniki. @jakubs

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 32
0

Nie wiem, co ten Twój algorytm ma robić, ale zazwyczaj posługując się tablicą dwuwymiarową robię tak:

Kopiuj
for(i = 0; i < X; ++i) {
    for(j = 0; j < Y; ++j) {
        Z[i][j] = jakieś działanie;
    }
}

Nie wiem, czy Ty najpierw inkrementując j, a następnie i robisz to celowo, czy może akurat tu jest błą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.