Verfasst am: 29.01.2012, 18:27
Titel: Alle kleinere Vektoren finden
Hallo,
ich bin gerade dabei, einen Code zu schreiben, der für einer Menge von Vektoren (n-dimensional) zählt, wieviele Vektoren kleiner als ein bestimmter Vekor sind.
Die Vektoren sind alle spaltenweise in der Matrix A gespeichert.
Dabei soll für jeden Vektor angezeigt werden, wieviele Vektoren kleiner sind.
Ein Vektor ist kleiner als der andere Vektor, wenn alle n Komponenten des Vektors kleiner sind.
Ich möchte, dass em ende dann angzeiegt wird, dass z.B. der Vektor A(:,x) von 8 Vektoren unterbiten wird und der Vektor A(:,y) beispielsweise von 20 Vektoren.
Ich hab leider keine Ahnung wie ich das machen kann.
Wie kann ich kann ich das schreiben, dass wirklich auch ALLE n Komponenten des Vektors kleiner sind. Ich hab mit dem Code unten ein Anfang gemacht. Doch leider ist auch der Anfang nicht ganz korrekt, da hierbei nicht darauf geachtet wird, dass ALLE Komponenten eines Vekotrs kleiner sein müssen.
Könnte mir jemand helfen?
DANKE!
Code:
zaehler(:,i)+1 %zaehler soll mir angeben wie oft der jeweilige Vektor unterboten wird
for i=1:anzVektoren
for k=1:anzVektoren
if A(:,i)<=A(;,k) & i~=k
zaehler(:,i)=zaehler(:,i)+1 end end end
Verfasst am: 30.01.2012, 11:17
Titel: Re: Alle kleinere Vektoren finden
Hallo frz3,
Wenn man die Matrix mit SORTROWS sortiert bestimmt die Position einer Zeile gleichzeitig die Anzahl der Zeilen, bei denen alle Elemente kleiner sind. Nun benötigt man noch den 2. Output von SORTROWS um die Korrelation zur orginalen Reihenfolge herzustellen.
für die erste Spalte beispielsweise für "zaehler" 5 rausgibt, weil die 20 zweimal (von 15 und 10) und die 30 dreimal (von 10, 20 und 12) unterboten wird.
Ich will aber, dass er da für "zaehler" 2 rausgibt. Da hier die erste Spalte nur von der 2. und 5. Spalte unterboten wird.
Könntest du mir noch dabei helfen?
Wäre Dir wirklich sehr dankbar!
mit ALLEN Vektoren der Matrix verglichen wird. Also beispielsweise auch mit dem Vektor [3;5], der nicht in der selben Zeile liegt.
Ich dachte damals ich krieg das selber hin, wenn du mir bisschen auf die Sprünge hilfst. Aber leider kann ich deinen Code nicht umschreiben, damit er zeilenübergreifend vergleicht.
Vom Prinzip her stimmt dein Code.
Vermutlich muss nur der Teil
die Matrix übereinander kopiere.
Das führt nämlich auch nicht dazu, dass ein Vektor auch mit den Vektoren verglichen wird, die sich nicht in seiner Zeile befinden.
Gibt es noch eine Möglichkeit, wenn ein Eintrag von B(1:2, I) "nan" ist, dass dann in der Matrix "zaehler" dafür keine 0 eingegeben wird, sondern ein "nan",
weil es ist sowieso klar, dass keine Zahl kleiner als "nan" sein kann?
Weil zum jetzigen Stand werden auch die "nan" Einträge der Matrix A mit den anderen Werten verglichen und dann logischerweise "0" rausgegeben, da kein Eintrag kleiner als 0 sein kann. Mir wäre es leiber, wenn er in solchen Fällen "nan" ausgibt statt "0".
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.