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

Relevante Zeile aus Matrix wiedergeben

 

schlechter_iq

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2016, 12:11     Titel: Relevante Zeile aus Matrix wiedergeben
  Antworten mit Zitat      
Hallo, ich habe ein Problem.
Ich brauche die Ausgabe einer relevanten Zeile einer Matrix.
Dafür soll erst der Index (Vektor) aller relevanten Objekte gefunden werden, welche die Bedingungen für die 3. Spalte erfüllen.
Danach sollen alle Zeilen der Matrix, welche relevant sind, nach dem Minimum der 2. Spalte gefiltert werden.
Das Minimum aller relevanten Objekte in der 2. Spalte ergibt dann die Ausgabe des Ergebnisvektors.

Wenn der Indexvektor leer ist, soll ein leerer Vektor ausgegeben werden.

Kann jmd über den Code sehen, ob es wirklich korrekt ist, bzw. mit absoluter Sicherheit das erfüllt, was gefordert ist. Mein Problem ist die Konsistenz des Codes, da ich ab und an ein unkonsistentes Ergebnis bekomme.

Falls es alternative Vorschläge gibt, gerne!!

Hier mein Code:

Code:
function vektor = fcn(matrix)

%Initialisierungen
vektor                              = zeros(1,32);
vektor_index_relevant               = [];
relevant_rows                       = [];
min_vals                            = [];
min_val                             = [];
min_rows                            = [];
min_row                             = 1;
min_col                             = [];

%Vorgehensweise:
%Relevante Objekte in Spalte 3 finden
vektor_index_relevant         = find(abs(matrix(:,3) < 5) & abs(matrix(:,3) > 0));

if (isempty(vektor_index_relevant) == 0)
    %Zeile des relevanten Objekts mit Minimum in Spalte 2 finden
    %Ergebnis: Zeile des relevanten Objekts mit Minimum
    relevant_rows                   = matrix(vektor_index_relevant,:);
    [min_vals, min_rows]              = min(relevant_rows(:,2));
    [min_val, min_col]                = min(min_vals);
    min_row                          = min_rows(min_col(1));

    %Relevante Zeile in Matrix weitergeben
    vektor              = relevant_rows(min_row,:);
else
vektor = zeros(1,32);
end

   


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 18.04.2016, 12:50     Titel:
  Antworten mit Zitat      
Zitat:
Mein Problem ist die Konsistenz des Codes, da ich ab und an ein unkonsistentes Ergebnis bekomme.

es wäre doch viel einfacher wenn du sagst bei welchen eingaben du das unerwartete ergebniss erhällst.
bei sowas kann man auch mit dem debugger reingehen und gucken was passiert.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.04.2016, 13:04     Titel:
  Antworten mit Zitat      
Hallo,

die Frage ist so allgemein schwer zu beantworten.

Du scheinst beispielsweise davon auszugehen, dass die Matrix immer 32 Spalten hat. Ob das zutreffend sein wird, kann ich nicht beurteilen.
Die Initialisierungen sind unnötig.

Du schreibst, dass du einen leeren Vektor zurückgeben möchtest, erzeugst aber einen Vektor mit Nullen.

Zitat:
da ich ab und an ein unkonsistentes Ergebnis bekomme.

Mit welchem Input wird die Funktion denn dann aufgerufen? Inwiefern weicht das Ergebnis von den Erwartungen ab?

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