|
|
Unterschiedlicher Output der "find"-Funktion je na |
|
demon tjd |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 23.03.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: MATLAB R2016b
|
|
|
|
|
|
Verfasst am: 23.03.2017, 19:19
Titel: Unterschiedlicher Output der "find"-Funktion je na
|
|
Hallo zusammen,
ich habe ein kleines Problem mit der "find"-Funktion. Ich möchte eine Matrix nach Einträgen durchsuchen, die ein bestimmtes Kriterien erfüllen, und von diesen den Zeilen und Spalten Index haben. Mit der "find"-Funktion kein Problem, habe ich mir gedacht.
Das Problem ist aber folgendes, in der Regel sind die Outputs 2 nx1 Matrizen/Vektoren. Wenn das Argument der "find"-Funktion nur eine Zeile hat, werden 2 1xn Matrizen/Vektoren ausgegeben.
Beispiel:
Das macht mir bei der Weiterverarbeitung der Daten einige Probleme. Klar kann ich das über eine if-Abfrage gerade biegen, aber das kann doch nicht die Lösung sein oder? Steckt da irgendein Sinn hinter den ich nicht verstehe? Kann ich MATLAB da irgendwie überlisten?
Vielen Dank für eure Anregungen!
Ich nutzte übrigens MATLAB R2016b
|
|
|
|
|
Wine |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.04.2017, 15:09
Titel:
|
|
Hi,
was genau ist denn dein Problem bei der Rückgabe der Werte? Aktuell werden dir die Indizes der Zeilen und Spalten getrennt ausgegeben. Möchtest du das ändern? Bzw. in welcher Form hättest du deine Ausgabe gerne?
Wenn du nur die Zeilen und Spalten der gefunden Vektoren in einer Matrix zusammengefasst haben möchtest, kannst du das ganz einfach mit:
a = [arow, acol] bzw. gleich mit a = find(a>0.5) lösen.
Viele Grüße,
Ines
|
|
|
demon tjd |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 23.03.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: MATLAB R2016b
|
|
|
|
|
|
Verfasst am: 19.04.2017, 15:30
Titel:
|
|
Nein, das ist nicht mein Problem, die Zeilen und Spalten sollen getrennt ausgegeben werden. Außerdem liefert:
nicht das gleiche Ergibnis wie
Im zweiten Fall beinhaltet a die "absoluten" Indizes und nicht die Zeilen und Spalten getrennt.
Das Problem ist, dass das Ergebnis je nach Format des Arguments der find-Funktion ein unterschiedliches Format hat.
Wenn das Argument mindestens 2 Zeilen hat (so wie a) ist das Ergebnis der find-Funktion ein Zeilen Vektor. Also z.B. [1;3;8;12;19]
Wenn das Argument nur eine Zeile hat (so wie b) ist das Ergebnis der find-Funktion ein Spalten Vektor. Also z.B [1 3 8 12 19]
Dieses unterschiedliche Format (je nach Format des Arguments) hat bei mir Probleme gemacht. Wie gesagt kein Weltuntergang, aber irgendwie auch extrem unlogisch in meinen Augen.
|
|
|
Wine |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.04.2017, 16:27
Titel:
|
|
Oh, das stimmt, sorry.
Ich denke die Logik dahinter ist, dass im vektorwertigen Fall der ausgegebene Vektor das selbe Format wie der Eingangsvektor haben soll - das steht diesbezüglich zumindest in der Dokumentation: "If X is a vector, then find returns a vector with the same orientation as X."
Am einfachsten kannst du das Problem also lösen, wenn du deinen Eingangsvektor b invertierst und ihn so zu einem Spaltenvektor machst, bevor du ihn in die find Funktion einspeist.
Also:
Viele Grüße,
Ines
|
|
|
demon tjd |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 23.03.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: MATLAB R2016b
|
|
|
|
|
|
Verfasst am: 19.04.2017, 16:34
Titel:
|
|
Ah, den Teil in der Doku habe ich wohl überlesen. Danke!
Wenn ich
verwende, sollte das für mich immer funktionieren. Das teste ich gleich mal.
Vielen Dank
|
|
|
Wine |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.04.2017, 16:52
Titel:
|
|
Gerne
Freut mich, dass ich helfen konnte
Viel Erfolg dir noch!
Viele Grüße,
Ines
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|