Hallo, Leute! Ich bin gerade dabei mich mit der DSP zu bechäftigen und die ohne Schwierigkeiten Hier einfach ein Beispielcode den ich geamacht habe. Ist nicht alle, aber es ist wo ich Schwierigkeiten habe double wave1[33500], wave2[33500], wavecorr[(33500*2)-1] double sig1noise=0, sig2noise=0, noisewave1[33500] double wave2noise[33500], sig1noiseamp=0, sig2noiseamp=0 // Tableaux preinitialiés: int tap3[] = {0,1,1}, m3[]= {1,1,1} N = 3 ( 3 Elements ) tap4[] = {0,0,1,1}, m4[] = {1,1,1,1}, N = 4 tap5[] = {0,0,1,0,1}, m5[] = {1,1,1,1,1} N = 5 . . . . . . . . tap18[] N = 18 Elements Hier soll ich eine sequence seq[] erzeugen void sequnce(int nbreEltsTap, int tap[], int m[]) { int i, j, longeurSeq, reg[33500], seq[33500], comp[33500], mult[10]; int sum = 0, buf; longeurSeq = pow(2,anzahlEltTap) - 1 for(i=0; i<longeurSeq; i++) { reg[i] = 0; } for(i=0; i<longeurSeq; i++) { for(j=0; j<nbreEltsTap; j++) { mult[j] = tap[j]*m[j]; sum += mult[j]; } buf = sum % 2; for(j = nbreEltsTap-1; j>0; j--) { m[j] = m[j-1]; } m[0] = buf; reg[i] = m[nbreEltsTap-1]; sum = 0; for(j=0; j<longeurSeq; j++) { if (reg[j] == 0) com[j] = 1; else comp[j] = 0; } seq[i] = reg[i]-comp[i]; wave[i] = seq[i] } //Hier soll ich Graphe plotten void generateGraphs(void) // Es ist hier eine CallBackfunktion von GUI { if(sig1noise==1) { GaussNoise(sig1points, sig1noiseamp, seed, noisewave1); for(i=0; i<sig1points; i++) { wave1[i] += noisewave1[i]; } } DeleteGraphplot(panelHandle, PANEL_SIG1GRAPH, -1, VAL_IMMEDIAT_DRAW ); PlotY(panelHandle, PANEL_SIG1GRAPH,wave1, sig1points, VAL_DOUBLE, VAL_THIN_LINE,.........); if(sig2noise==1) { // genau wie bei sig1noise } if((sig1noise==1)||(sig2noise==1) { seed +=1; if(seed>50) seed = 1; } Correlate(wave1, sig1point, wave2, sig1poits, wavecorr); PlotY(panelHandle, PANEL_CORRGRAPH, wavecorr, (sig1points+sig2points-1), VAL_DOUBLE, VAL_THIN_LINE.....); } /* Auf dem PANEL soll ich die Anzahl der Elemente auswählen */ int CVICALLBACK Getsig1tap(.............) { switch(event) { case EVENT_COMMIT: GetCtrlVal(panelHandle, PANEL_SIG1TAP, &sig1tap); if(autogenerateGraphs) GenerateGraphs; break; case EVENT_CHANGED: break; case RIGHT_CLICK: break; } return 0; } int CVICALLBACK Getsig2tap(.............) { // genauso wie bei Getsig1tap } int CVICALLBACK Getsig1point(.............) { switch (event) { case EVENT_COMMIT: GetCtrlVal(panelHandle, PANEL_SIG1POINT, &sig1point); if(autogenerateGraphs) GenerateGraphs; break; case EVENT_CHANGED if(autogenerateGraphs) GenerateGraphs; break; } return 0; } int CVICALLBACK Getsig2point(.............) { // Genauso wie bei Getsig1point } int CVICALLBACK Getsig1noise(.............) { switch(event) { case EVENT_COMMIT: GetCtrlVal(panelHandle, PANEL_SIG1NOISE, &sig1noise); if(sig1noise==0) SetInputMode(panelHandle, PANEL_SIG1NOISEAMP, 0); else SetInputMode(panelHandle, PANEL_SIG1NOISEAMP, 1); if(autoGenerateGraphs) GenerateGraphs; break; case EVENT_CHANGED: break; } return 0; } int CVICALLBACK Getsig2noise(.............) { //Genauso wie bei Getsig1noise } int CVICALLBACK Getsig1noiseamp(.............) { switch(event) { case EVENT_COMMIT: GetCtrlVal(panelHandle, PANEL_SIG1NOISEAMP, &sig1noiseamp); if(autoGenerateGraphs) GenerateGraphs; break; case EVENT_CHANGED: break; } return 0; } int CVICALLBACK Getsig2noiseamp(.............) { // Genauso wie bei Getsig1noiseamp } Meine Fragen 1 - Wenn ich Tap18 auswähle(Array mit 18 Elements ), soll ich eine sequence mit 262143 Elemente bekommen und plotten. Dies ist aber zu gross für mein Implementierung, da ich 33500 Elemente deklariert habe. So muss einen dynamischen Array programmieren. Dies ist mir etwas schwierig da ich nicht so viel mit C programmier habe. Kann jemand mir dabei helfen? 2 - Wenn ich den Noise Button einschalte, kriege ich eine Graph. Wenn ich danach eine sequence plotten möchte, wird es auf dem NoiseGraph geplottet. Also der Noisesignale bleibt noch. Es komm wiederum auf das erste Problem. Ich habe schon viel daran überlegt. Ich programmiere mit Labwindows. Ich bedanke mich im voraus
Bei Problemen mit Programmen sollte man ein minimales Beispiel bringen, welches das Problem demonstriert und am besten übersetzbar ist! Denn für potentielle Helfer ist so der Einstieg viel leichter. Vielleicht findet sich ja wer, der das jetzt alles durchgeht und versucht zu verstehen was du meinst, aber "Verluste" haben wirst du auf jeden Fall. Den Code anständig formatieren würde auch helfen. Präzise Sprache hilft: "Wenn ich Tap18 auswähle(Array mit 18 Elements )", was heisst es denn ein Array "auszuwählen"?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.