Signatur
Beschreibung
Die Funktion stats_stat_innerproduct() ist Teil der PECL-Erweiterung stats und berechnet das Skalarprodukt (auch inneres Produkt oder Dot Product genannt) zweier Vektoren. Das Skalarprodukt ist die Summe der paarweise multiplizierten Elemente beider Vektoren: Σ (ai · bi).
Diese Operation ist grundlegend in der linearen Algebra und wird in der Praxis für Ähnlichkeitsberechnungen (z. B. Kosinus-Ähnlichkeit), Regressionsanalysen und maschinelles Lernen verwendet. Beide Arrays müssen dieselbe Anzahl numerischer Elemente enthalten, damit das Ergebnis korrekt berechnet werden kann.
Die Funktion gibt false zurück, wenn die Arrays unterschiedliche Längen haben oder andere Fehler auftreten. Sie setzt die installierte PECL-Erweiterung stats voraus, die nicht zum PHP-Standardlieferumfang gehört und separat installiert werden muss.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $arr1 Pflicht | array | Der erste numerische Vektor als indiziertes Array. Alle Werte sollten numerisch sein. | |
| $arr2 Pflicht | array | Der zweite numerische Vektor als indiziertes Array. Muss dieselbe Anzahl von Elementen wie arr1 besitzen. |
Rückgabewert
float zurück. Bei einem Fehler (z. B. unterschiedliche Array-Längen oder ungültige Eingaben) wird false zurückgegeben.Beispiele
Einfaches Skalarprodukt zweier Vektoren
<?php
// Voraussetzung: PECL-Erweiterung 'stats' muss installiert sein
// php -m | grep stats
$vektor1 = [1, 2, 3];
$vektor2 = [4, 5, 6];
// Skalarprodukt: (1*4) + (2*5) + (3*6) = 4 + 10 + 18 = 32
$ergebnis = stats_stat_innerproduct($vektor1, $vektor2);
if ($ergebnis !== false) {
echo 'Skalarprodukt: ' . $ergebnis;
} else {
echo 'Fehler bei der Berechnung.';
}
Kosinus-Ähnlichkeit zweier Vektoren berechnen
<?php
// Kosinus-Ähnlichkeit = Skalarprodukt(a, b) / (|a| * |b|)
// Nützlich z. B. für Textähnlichkeit (TF-IDF-Vektoren)
function vektorBetrag(array $v): float {
return sqrt(array_sum(array_map(fn($x) => $x ** 2, $v)));
}
$a = [1, 0, 1, 0, 1];
$b = [1, 1, 1, 0, 0];
$skalarprodukt = stats_stat_innerproduct($a, $b);
$betragA = vektorBetrag($a);
$betragB = vektorBetrag($b);
if ($skalarprodukt !== false && $betragA > 0 && $betragB > 0) {
$kosinusAehnlichkeit = $skalarprodukt / ($betragA * $betragB);
echo 'Kosinus-Ähnlichkeit: ' . round($kosinusAehnlichkeit, 4);
} else {
echo 'Berechnung nicht möglich.';
}
// Wichtig · Fallstricke
PECL-Abhängigkeit: stats_stat_innerproduct() ist keine eingebaute PHP-Funktion. Sie erfordert die separate Installation der PECL-Erweiterung stats (z. B. via pecl install stats). Ohne diese Erweiterung führt der Aufruf zu einem fatalen Fehler.
Achten Sie darauf, dass beide Arrays dieselbe Anzahl von Elementen enthalten. Bei unterschiedlichen Längen wird false zurückgegeben. Nicht-numerische Array-Werte können zu unerwarteten Ergebnissen oder Fehlern führen.
Für reine PHP-Projekte ohne PECL kann das Skalarprodukt alternativ mit array_sum(array_map(fn($a, $b) => $a * $b, $arr1, $arr2)) berechnet werden.