Faltungsrechner
Schieben Sie eine Folge über die andere und addieren Sie an jeder Stelle die Produkte: [1; 2; 3] gefaltet mit [0,5; 0,5] ergibt [0,5; 1,5; 2,5; 1,5]. Alle Teilüberlappungen bleiben erhalten, das Ergebnis hat also n + m − 1 Werte. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Erster Text
- 1, 2, 3
- Zweiter Text
- 0,5, 0,5
- Länge von a
- 3
- Länge von b
- 2
- Länge
- 4
- Sequenz
- 0,5, 1,5, 2,5, 1,5
Die diskrete Faltung ist die grundlegende Operation der Signalverarbeitung und der angewandten Mathematik: Sie schiebt eine endliche Folge über eine andere und multipliziert bei jeder Überlappung die ausgerichteten Werte und summiert die Produkte. Gegeben zwei Folgen a der Länge n und b der Länge m, liefert dieser Rechner ihre vollständige lineare Faltung, eine neue Folge der Länge n plus m minus eins, deren k-ter Wert die Summe von a[i] mal b[j] über jedes Indexpaar mit i plus j gleich k ist. Es ist dieselbe Berechnung, die hinter FIR-Filterung, gleitenden Durchschnitten, Polynommultiplikation und Wahrscheinlichkeitsverteilungen von Summen unabhängiger Würfel steht. Beide Folgen müssen mindestens einen Wert enthalten und jeder Wert muss eine endliche Zahl sein; leere Folgen und nicht endliche Einträge wie NaN oder Infinity werden mit einem klaren Validierungsfehler abgelehnt.
Was die diskrete Faltung bedeutet und wie sie berechnet wird
Die Faltung beantwortet eine einfache Frage: Wenn Sie eine Folge umkehren, über die andere schieben und bei jeder Ausrichtung die überlappenden Paare multiplizieren und die Produkte summieren, welche Zahl lesen Sie an jeder Position ab? Formal ist für Folgen a der Länge n und b der Länge m die Faltung c gleich a Stern b die Folge der Länge n plus m minus eins, definiert durch c[k] gleich der Summe von a[i] mal b[k minus i] über jedes gültige i.
Ein konkretes Beispiel macht das greifbar: Die Faltung von [1, 2, 3] mit [0.5, 0.5] ergibt [0.5, 1.5, 2.5, 1.5], weil jeder Ausgabewert der Mittelwert eines Eingabewerts mit seinem Nachbarn ist, mit halbierten Gewichten an den Rändern. Dieser „vollständige“ Modus, den dieses Werkzeug zurückgibt, behält alle partiellen Überlappungen, einschließlich der Positionen mit nur einem Berührungspunkt an beiden Enden. Der hier verwendete direkte Algorithmus führt n mal m Multiplikations-Akkumulations-Schritte aus, was für die Folgen in Lehre, Filterentwurf und Datenanalyse sofort erledigt ist.
Es lohnt sich zu wissen, dass die Faltung kommutativ ist, also a Stern b gleich b Stern a gilt, und assoziativ, sodass verkettete Glättungen umgeordnet werden können, ohne das Ergebnis zu ändern. Die Operation ist außerdem distributiv über der Addition, weshalb die Theorie linearer Systeme so stark auf ihr aufbaut.
Eingaben, Grenzen und Validierungsregeln
Der Rechner akzeptiert zwei Felder, a und b, jeweils ein nicht leeres Array von Zahlen. Werte dürfen ganzzahlig, dezimal oder negativ sein, und numerische Zeichenketten in wissenschaftlicher Notation wie 1.5e-3 werden sicher umgewandelt. Zwei harte Regeln schützen den Vertrag.
Erstens darf keine Folge leer sein: Eine Eingabe der Länge null hat keine Faltung und wird abgelehnt, statt stillschweigend als Nullimpuls behandelt zu werden. Zweitens muss jedes Element eine endliche Zahl sein; NaN, Infinity und Werte, die während der Akkumulation zu nicht endlichen Ergebnissen überlaufen würden, werden mit einer Meldung abgelehnt, die das betreffende Feld und den Index nennt. Jede Folge ist auf 4096 Elemente begrenzt, was die direkte O(n·m)-Schleife bequem im Rechenbudget hält und alle realistischen Bildungs- und Ingenieurzwecke abdeckt.
Wo die Faltung in der Praxis eingesetzt wird
Die Faltung taucht an weit mehr Stellen auf, als ihr Name vermuten lässt. In der digitalen Signalverarbeitung ist sie die Art, wie ein Filter mit endlicher Impulsantwort angewendet wird: Der Kern b enthält die Tap-Gewichte und die Ausgabe ist das gefilterte Signal, sodass ein gleitender Durchschnitt der Breite drei einfach die Faltung mit [1/3, 1/3, 1/3] ist. In der Wahrscheinlichkeitsrechnung ist die Verteilung der Summe zweier unabhängiger diskreter Zufallsvariablen die Faltung ihrer Wahrscheinlichkeitsmassenfunktionen; die Faltung der Gleichverteilung eines Würfels mit sich selbst ergibt die bekannte Dreiecksverteilung zweier Würfel.
In der Algebra ist das Multiplizieren zweier Polynome genau das Falten ihrer Koeffizientenlisten, was dieses Werkzeug zu einem schnellen Prüfer für symbolische Hausaufgaben macht. In der Bildverarbeitung werden separierbare zweidimensionale Kerne als zwei eindimensionale Faltungen nacheinander angewendet. Selbst Echo und Hall in Audio sind Faltungen mit einer in einem echten Raum aufgezeichneten Impulsantwort.
Überall dort, wo die Ausgabe eines Systems eine verschobene, skalierte Überlagerung seiner Eingabe ist, ist die Faltung die beschreibende Operation.
Anwendungsfälle
Ein FIR-Filter auf ein abgetastetes Signal anwenden
Geben Sie Ihre Abtastwerte als Folge a und die Tap-Gewichte des Filters als Folge b ein, um die gefilterte Ausgabe zu erhalten. Ein Glättungskern wie [0.25, 0.5, 0.25] entfernt hochfrequentes Rauschen ganz ohne Signalverarbeitungsbibliothek.
Verteilung der Summe von Würfeln
Falten Sie die Wahrscheinlichkeitsmassenfunktion eines fairen Würfels mit sich selbst, um die exakten Wahrscheinlichkeiten für die Summe zweier Würfel zu erhalten, und falten Sie erneut für drei Würfel. Jeder Schritt ist ein Aufruf mit endlichen, prüfbaren Zahlen.
Polynome multiplizieren mit manueller Prüfung
Da die Polynommultiplikation die Faltung der Koeffizientenlisten ist, geben Sie die Koeffizienten beider Faktoren ein und vergleichen die Ausgabefolge mit Ihrer symbolischen Entwicklung, um Vorzeichen- und Ausrichtungsfehler sofort zu erkennen.
Häufige Fragen
Wie lang ist die gefaltete Folge?
Wenn Folge a n Werte hat und Folge b m Werte, hat die vollständige Faltung n + m - 1 Werte.
Spielt die Reihenfolge der beiden Folgen eine Rolle?
Konventionell steht das längere Signal in a und der kürzere Kern in b.
Warum wurde meine Eingabe abgelehnt?
Die zwei harten Regeln lauten: Keine Folge darf leer sein, und jedes Element muss eine endliche Zahl sein. NaN, Infinity oder Ergebnisse, die während der Akkumulation überlaufen, werden mit einem Fehler abgelehnt, der Feld und Index des betreffenden Werts nennt.
Ist dies eine zirkuläre oder eine lineare Faltung?
Dieses Werkzeug berechnet die vollständige lineare Faltung mit Nullauffüllung an beiden Enden, also dasselbe Ergebnis wie die direkte Summation. Es faltet die Folgen nicht zyklisch wie die zirkuläre Faltung.
Gibt es eine Größenbegrenzung?
Jede Folge darf bis zu 4096 endliche Zahlen enthalten.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/math/convolution \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":[1,2,3],"b":[0.5,0.5]}'const res = await fetch("https://api.kit.forhosting.com/math/convolution", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": [
1,
2,
3
],
"b": [
0.5,
0.5
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/convolution",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": [
1,
2,
3
],
"b": [
0.5,
0.5
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/convolution", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":[1,2,3],"b":[0.5,0.5]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":[1,2,3],"b":[0.5,0.5]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/convolution", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"a": [
1,
2,
3
],
"b": [
0.5,
0.5
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.convolution",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_items | 4096 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Das kostenlose Browser-Werkzeug und die kostenpflichtige API führen dieselbe reine Funktion aus, sodass die Ergebnisse zwischen den Kanälen niemals auseinanderlaufen.
Eingaben, Grenzen und Validierungsregeln
Das Ausgabeobjekt meldet length_a, length_b, die Ausgabelänge und die gefaltete Folge selbst unter dem Schlüssel sequence, sodass Skripte die Größen prüfen können, ohne sie neu zu berechnen.
Wo die Faltung in der Praxis eingesetzt wird
Der API-Weg kostet $0.002 pro Anfrage, während das Browser-Werkzeug dieselbe Mathematik kostenlos ausführt.
Technische Fragen
Was kostet die API?
Der Browser-Rechner ist kostenlos und unbegrenzt. Der Aufruf derselben Fähigkeit über die API kostet $0.002 pro Anfrage; beide Kanäle führen dieselbe deterministische Funktion aus.