Keep 1 in N
Datenreduktion durch gezieltes Downsampling — jedes n-te Element bleibt erhalten, solange Nyquist eingehalten wird.
1. Beschreibung des Blocks
Der Keep 1 in N-Block (blocks.keep_one_in_n) reduziert einen Datenstrom, indem er von je $N$ aufeinanderfolgenden Samples genau eines beibehält und die übrigen $N-1$ verwirft. Es findet dabei keine Filterung statt — anders als bei einem echten Dezimationsfilter wird nicht gemittelt oder tiefpassgefiltert, sondern schlicht jedes $N$-te Sample durchgereicht.

Das linke Signal ist das Ergebnis von Keep 1:2. Statt 10 Samplepunkten sind nur noch 5 im Signal enthalten:

2. Technischer Einsatz
Der Block eignet sich zur reinen Datenreduktion, wenn ein Signal mit unnötig hoher Rate vorliegt und die Systemressourcen der nachfolgenden Verarbeitung entlastet werden sollen — etwa nach einem stark oversampelten ADC-Eingang, oder um die Datenrate an eine langsamere Senke (z. B. eine Anzeige) anzupassen.
3. Parameter und Dimensionierung
| Parameter | Typ/Einheit | Bedeutung | Dimensionierungshinweis |
|---|---|---|---|
type |
Enum | Datentyp: Complex, Float, Int, Short, Byte | muss dem Typ der Eingangsquelle entsprechen |
n (N) |
Integer | Reduktionsfaktor — jedes $N$-te Sample bleibt erhalten | muss > 0 sein; neue Abtastrate ist $f_s/N$ — vor Anwendung prüfen, ob $f_s/N$ noch über der doppelten Nutzsignalbandbreite liegt |
vlen (Vector Length) |
Integer | Anzahl Elemente pro Vektor-Sample | Standard 1 |
4. Ein- und Ausgänge
| Ein-/Ausgang | Typ |
|---|---|
| Eingang | wie type |
| Ausgang | wie type, Rate um Faktor $N$ reduziert |
5. Weitere wichtige Aspekte
Live-Parameteränderung: set_n(...) erlaubt eine Anpassung des Reduktionsfaktors zur Laufzeit.
Verwandter Block: Für eine bandbegrenzte Dezimation mit integrierter Filterung siehe die decim-Option der FIR-Filter-Blöcke, z. B. Bandpass-Filter-Blöcke — dort wird die Filterung und Ratenreduktion in einem Schritt durchgeführt.