Matematyczne funkcje w tablicach dwuwymiarowych

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:

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:

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 :(

0

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

0

W deklaracji sinus1 powinieneś mieć

float **

a nie

float *
0

@kapojot nie rozumiem :(

0
for(j=0; j<p  ; i++)
        for(i=0; i<M  ; i++)

Nie powinno być ?

for(j=0; j<p  ; j++)
        for(i=0; i<M  ; i++)
0

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

0

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1