Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Funktionsentwickler (w/m) Automobile
Entwicklung von modellbasierten Softwarelösungen in Simulink inklusive Autocode-Generierung
Bertrandt Ingenieurbüro GmbH - Frankfurt am Main

Software Entwicklungsingenieur (m/w) TargetLink
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Continental AG - Nürnberg

Softwareentwickler (m/w) automatische Codegenerierung
Umsetzung, Neuprogrammierung und Weiterentwicklung in Simulink, TargetLink und C
EFS - Ingolstadt, Wolfsburg

Entwicklungsingenieur (m/w) Windturbinenregelung
Entwicklung von Regelungsalgorithmen für Windturbinenregler und Regelverfahren für Windparks
ENERCON GmbH - Bremen, Aurich, Magdeburg, Schleswig-Holstein

Entwickler (m/w) Fahrerassistenzsysteme - Fahrzeugnahe Funktionsentwicklung
Entwicklung von Funktionen für assistiertes und pilotiertes Fahren
Knorr-Bremse Systeme für Nutzfahrzeuge GmbH - Schwieberdingen

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Position von Maximum bestimmen

 

Ewkos
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 30.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2016, 22:10     Titel: Position von Maximum bestimmen
  Antworten mit Zitat      
Hallo,

ich hab noch eine weitere Frage:
Ich habe ein n-dimensionales Array und möchte davon das Maximum sowie dessen Postioon bestimmen.
Das Maximum ist leicht zu bekommen, aber bei der Position nur die im umgewandelten 1-dim Array. Klar ich könnte das umrechnen, aber das muss auch einfacher gehen.
Bisher bin ich soweit:
Code:
[maxT, index] = max(data(:));
[index2,index3,index4] = ind2sub(size(data),index);

Letzteres setzt aber voraus, das ich weis welche DImension data hat, damit ich entsprechend viele Variablen einsetzen kann.

Vielen Dank schonmal
Ewkos
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 17.965
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 12.11.2016, 23:10     Titel:
  Antworten mit Zitat      
Hallo,

dass die Dimensionen variieren, ist jetzt nichts ungewöhnliches. Dass die Anzahl der Dimensionen variiert, finde ich allerdings sehr ungewöhnlich.

Selbst wenn es einfacher gehen sollte: das ist auch der Weg, den ich nehmen würde.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.965
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 14.11.2016, 11:40     Titel:
  Antworten mit Zitat      
Hallo,

ich habe noch eine Lösung gefunden:

Code:
data = rand(2,3,4,5);
s = size(data);
[maxT, index] = max(data(:));
dims = cell(1, length(s));
[dims{:}] = ind2sub(s,index);
dims = cell2mat(dims)


Sollte man so etwas öfter brauchen, kann man es ja in eine Funktion packen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 10.481
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.11.2016, 16:32     Titel:
  Antworten mit Zitat      
Hallo,

Eigentlich ist das Output-Format von ind2sub unpraktisch dafür. Die Daten in ein Cell und wieder in einen Vektor umzuwandeln ist schräg. Einfacher:
Code:
function sub=in2subv(siz, index)
n = length(siz);
cum = [1, cumprod(siz)];
sub = zeros(1, n);
for k = n:-1:1
  vk = rem(index - 1, cum(k)) + 1;
  sub(k) = (index - vk) / cum(k) + 1;
  index = vk;
end

Gruß, Jan

PS. Und wie immer bei Standard-Problemen: Da ist auch schonmal ein anderer drauf gekommen und hat es im FileExchange veröffentlich: https://www.mathworks.com/matlabcen.....-vector-from-linear-index
Also: Dort mal zu suchen ist immer eine gute Idee :-)
Private Nachricht senden Benutzer-Profile anzeigen
 
Ewkos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 30.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2016, 16:42     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für die Hilfe; mit euren Codes klappt es nun:)

@Jan: danke für den Link; ich hatte zwar nach dem Problem gegoogelt, aber hatte nichts passendes gefunden. Da hatte ich wohl nicht die richtigen Begriffe eingegeben.

Grüße
Ewkos
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.