WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Absolutes Maximum von 2 Vektoren für jede Zeile

 

Boingenau
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2016, 10:44     Titel: Absolutes Maximum von 2 Vektoren für jede Zeile
  Antworten mit Zitat      
Hallo,

ich versuche gerade mir das absolute Minimum für jede Zeile von 2 Vektoren zu bestimmen. Wichtig ist dabei, dass das Vorzeichen vorhanden bleibt. Wenn ich z.B. die 2 Vektoren:

x=[5,3,1,-2,-3,-5] und y=[-7,-2,0,1,4,6] habe, sollte im Zielvektor

z=[5,-2,0,1,-3,-5] ausgegeben werden.

Bisher bin ich leider nur bis zu dem Punkt gekommen, mir für einen Vektor das absolute Minimum zu bestimmen.
Code:
%
 x=[1,2,3,6,5,6,7,7,-8];
 [c,k] = min(abs(x(:)));
x(k)


Wenn ich versuche das für 2 Vektoren Zeilenweise zu machen, bringt Matlab den Hinweis,
MIN with two matrices to compare and two output arguments is not supported.

Meine Eingabe war
Code:
%
[Wert,indexu2]=min(abs(x(:)),abs(y(:)));


Dabei ist y der zweite Vektor. Kann mir da vielleicht jemand weiterhelfen? Vielen Dank.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.10.2016, 13:21     Titel: Re: Absolutes Maximum von 2 Vektoren für jede Zeile
  Antworten mit Zitat      
Hallo Boingenau,

Wenn der min Befehl die gewünschte Methode nicht für zwei Inputs anbietet, liefere doch einfach nur ein Input:
Code:
x = [5,3,1,-2,-3,-5];
y = [-7,-2,0,1,4,6];
xy = [x; y];
[dummy, minIndex] = min(abs(xy), [], 2);

Nun ist "minIndex" der Zeilenindex, also 1 oder 2. Das lässt sich nun entweder per sub2ind verwenden, oder man nutzt wieder die beiden Ausgangs-Vektoren:
Code:
Index = sub2ind(size(xy), minIndex, 1:size(xy, 2));
minValue = xy(Index);

% Oder:
minValue(minIndex == 1) = x(minIndex == 1);
minValue(minIndex == 2) = y(minIndex == 2);

Eine Alternative ist der direkte Vergleich:
Code:
XSmalerY = abs(x) < abs(y);
minValue(xSmalerY) = x(xSamlerY);
minValue(~xSamlerY) = y(~xSamlerY);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Boingenau
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2016, 13:50     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für deine schnelle Hilfe!!! Funktioniert einwandfrei. Stand da heut Morgen wohl n bisschen aufm Schlauch. Schönes Wochenende.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.