Beschreibung | ..._addC: | Yi*samp += C, | i=0,...subsize−1 |
..._addV: | Yi*samp += Xi, | i=0,...subsize−1 |
..._subC: | Yi*samp -= C, | i=0,...subsize−1 |
..._subV: | Yi*samp -= Xi, | i=0,...subsize−1 |
..._subrC: | Yi*samp = C - Yi*samp, | i=0,...subsize−1 |
..._subrV: | Yi*samp = Xi- Yi*samp, | i=0,...subsize−1 |
..._mulC: | Yi*samp *= C, | i=0,...subsize−1 |
..._mulV: | Yi*samp *= Xi, | i=0,...subsize−1 |
..._divC: | Yi*samp /= C, | i=0,...subsize−1 |
..._divV: | Yi*samp /= Xi, | i=0,...subsize−1 |
..._divrC: | Yi*samp = C / Yi*samp, | i=0,...subsize−1 |
..._divrV: | Yi*samp = Xi / Yi*samp, | i=0,...subsize−1 |
Polar-komplexe Versionen:
Es gibt nur Multiplikation und Division: ...mulC, ...mulV, ...divC, ...divV, ...divrC und ...divrV.
Die im Suffix des Funktionsnamens angegebene Operation wird auf eine Untermenge von Elementen eines Vektors angewendet. Das Abtast-Intervall wird durch samp angegeben. Beginnend mit dem nullten, wird die jeweilige Operation auf jedes samp-te Element angewandt, bis hin zu insgesamt subsize Elementen. subsize ist also nicht die Gesamtgröße des Vektors, sondern die Anzahl der veränderten Elemente. Man beachte, dass alle Operationen "an Ort und Stelle", d.h. unter Veränderung des Eingabe-Vektors, ausgeführt werden. Für analoge Funktionen, die in der obigen Aufstellung nicht enthalten sind, ist die erforderliche Aufruf-Sequenz analog dem folgenden Beispiel (in dem size als ganzzahliges Vielfaches von 10 angenommen wird):
VF_subvector( Y, size/10, 10, X ); /* extrahieren */
VF_sinc( Y, Y, size/10 ); /* gewünschte Funktion */
VF_subvector_equV( X, size/10, 10, Y ); /* zurück-kopieren */
In einem so einfachen (und gleichzeitig seltenen) Fall wie diesem sollte man allerdings überlegen, ob man nicht doch auf klassische Schleifen zurückgreifen kann. Nur, wenn die gewünschte Funktion nicht in der mathematischen Bibliothek Ihres Compilers enthalten ist, lohnt der Aufwand des Extrahierens und Zurück-Kopierens. |