Effiziente Implementierung der Mehrklassen-Stimmenmehrheit in MATLAB

Ein paar Tage lang habe ich mich gefragt, wie ich die Abstimmung mit gewichteter Mehrheit von m Experten in Matlab effizient umsetzen kann. Hier ist ein Beispiel dafür, was ich will. Angenommen, wir haben 3 Experten mit Gewichtsvektor

w=[7 2 6]

Angenommen, sie stimmen n Mal über die Optionen A / B / C / D ab, so erhalten wir zum Beispiel die folgende n x m-Abstimmungsmatrix, in der die Spalten die Stimmen jedes Experten sind.

A B B
C A A
D B A
A A C

Jetzt möchte ich für jede Zeile eine gewichtete Mehrheit finden. Wir berechnen dies, indem wir die Gewichte der Experten addieren, die für jede Option gestimmt haben, und das maximale Gewicht auswählen. In der ersten Reihe beispielsweise hat die Option A ein kumulatives Gewicht von 7 (Abstimmung von Experte 1) und B ein kumulatives Gewicht von 8 (Abstimmung von Experte 2 und 3), und daher ist die endgültige Abstimmung B. folgende kumulative Gewichtsmatrix und Schlussabstimmungen:

A B C D
- - - -
7 8 0 0 -> B
8 0 7 0 -> A
6 2 0 7 -> D
9 0 6 0 -> A

Nun ist die Implementierung dieser Verwendung von for-Schleifen über die Anzahl von Zeilen n mehr oder weniger einfach. Ich suche jetzt nach Lösung, die diese möglicherweise lange Schleife nicht erfordert und stattdessen Vektorarithmetik verwendet. Ich habe ein paar Ideen gehabt, bin aber mit jeder auf einige Probleme gestoßen, deshalb werde ich sie jetzt nicht erwähnen. Wenn jemand zuvor eine ähnliche Situation hatte, teilen Sie uns bitte Ihre Lösungen mit.

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage