Liebe Forummitglieder,
bin wie ihr so oft hört ein Neuling und brauche eure Hilfe. Ich habe die 2x2 Matrizen A und B und lasse von jeder Spalte von A die kürzeste Distanz zu den Spalten von Matrix B ermitteln.
Das ganze sieht so aus und funktioniert auch. (habe jetzt für A und B einfach mal ein paar Spalten eingefügt)
Code:
function ausgabe= Funktion(A,B)
A=[100,5;11;102] %Schülerwohnort
B=[4,5;2,3;4,9;4,4]% Standorte Schule [m,n]=size(A) [o,p]=size(B) for i=(1:m) for k=(1: o)
count(k,: ) = norm(B(k,: ) - A(i,1));
end
ausgabe(i,1) = min(count);
end
Nun zu meiner Frage um mir Arbeit zu sparen würde ich gerne nicht nur die kürzeste Distanz erfahren sondern auch welche Spalte von B nun auch zu der kürzestens Distanz geführt hat.
(Das liegt einfach am Sachzusammenhang das hinter jeder Spalte die Koordinate einer Schule steckt und ich somit sagen kann für Schüler 1 ist Schule Spalte 5 am kürzesten)
Könnt ihr mir an dieser Stelle weiterhelfen? komme nicht weiter! Dankeschön
min giebt auch den index zurück. in deinem fall also k das
Code:
A=[100,5;11;102]; %Schülerwohnort
B=[4,5;2,3;4,9;4,4]; % Standorte Schule [m,n]=size(A);
[o,p]=size(B);
for i=(1:m) for k=(1:o)
count(k,:)=norm(B(k, :)-A(i,1));
end [X,I]=min(count);
ausgabe(i,1:2)=[X,I];
end
Verfasst am: 03.07.2013, 08:39
Titel: Ausgabe aller Minima
Mir ist etwas aufgefallen im Sachzusammenhang und deshalb bräuchte ich wenn es zwei Minima gibt die Ausgabe von beiden. Kann ich den min Befehl so ändern, dass er mir mehr als ein Minimum ausgibt?
Code:
A=[100,5;11;102]; %Schülerwohnort
B=[4,5;2,3;4,9;4,4]; % Standorte Schule [m,n]=size(A);
[o,p]=size(B);
for i=(1:m) for k= 1:o
count(k,:)=norm(B(k, :)-A(i,1));
end [X,I]=min(count);
ausgabe(i,1:2)=[X,I];
end
[C,I] = min(...) finds the indices of the minimum values of A, and returns them in output vector I. If there are several identical minimum values, the index of the first one found is returned.
Wenn ihr eine Idee habt alle identischen Minima zu bekommen, dann wäre ich euch sehr dankbar.
habe mir den Beitrag zu create Cell array erarbeitet, komme aber trozdem nicht weiter ! kannst du mir einen tipp geben? danke für den anderen schoneinmal !
A=[100,5;1,1;10,2]; %Schülerwohnort
B=[4,5;2,3;4,9;4,4;4,9]; % Standorte Schule [m,n]=size(A);
[o,p]=size(B);
for i=(1:m) for k= 1 : o
count(k,:)=norm(B(k, :)-A(i,1));
end [X,I]=min(count);
ausgabe{i,1}=X;
ausgabe{i,2}=find(count==X);
end
okay danke hatte da einen Fehler, läuft super. Danke
Einstellungen und Berechtigungen
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.