programmieraufgabe zu diskrete Faltung?
Ich bin neu in Python und habe diese Aufgabe bekommen. Wir haben eine Definition der Berechnung, die wir durchführen sollen.
xs und ys sind zwei Sätze der Länge N und die diskrete Faltung bei 0 ist "(xs ∗ ys) 0: = NX - 1 n = 0 xs [n] · ys [N - 1 - n].
Wir sollten auch assert hinzufügen auf die Funktion, damit wir überprüfen können, ob es richtig ist.
assert convolute_0([1], [10] ) == 1*10
assert convolute_0([1,2], [10,20] ) == 1*20 + 2*10
assert convolute_0([1,2,3], [10,20,30] ) == 1*30 + 2*20 + 3*10
assert convolute_0([1,2,3,4], [10,20,30,40]) == 1*40 + 2*30 + 3*20 + 4*10
Das sollte das Ergebnis sein. Ich weiß, wie man Mengen macht, aber ich weiß nicht, wie man die Elemente verschiedener Mengen multipliziert und was in den Mengen sein sollte.
1 Antwort
Diese "Mengen" sind als Listen abgebildet.
Du musst also zunächst wissen, wie man durch eine Liste iteriert. Das macht man mit for.
Dann musst du aber hier durch zwei Listen gleichzeitig iterieren und die Werte jeweils multiplizieren (und zu einer Summe addieren). Ein einfacher Ansatz ist es, mit zip() zu arbeiten: https://docs.python.org/3/library/functions.html#zip
Und als kleine Komplikation kommt dazu, dass du eine der Listen vom anderen Ende durchiterieren musst - dabei hilft dir reversed(): https://docs.python.org/3/library/functions.html#reversed
Noch Fragen? Geh das Ganze schrittweise an, probier es in der Konsole direkt aus.
Das zeigen doch deine Assertions - da hast du beispielhafte Aufrufe und die erwarteten Resultate, als Testfälle.
danke, noch eine frage, wie müssen die Elemente der beiden Listen aussehen?