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

find Funktion - einzelnen Wert in großer Matrix finden

 

Flol

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2012, 13:56     Titel: find Funktion - einzelnen Wert in großer Matrix finden
  Antworten mit Zitat      
Hallo zusammen !

ich stehe gerade gewaltig auf dem Schlauch..
folgendes: ich habe eine Matrix (etwa 1000x1000)
mit verschiedenen werten von 0-1 (etwa 0.0975, 0.0834 usw).
nun wuerde ich gerne die Position eines in der Matrix vorhandenen Werts (Beispielsweise 0.0923) herausfinden. Oder auch die Positionen, falls es mehrere sind.

Dann dachte ich mir - ha ! die find funktion eignet sich doch dafür sicher !

habe dann folgendes probiert:
[r,c,v]=find(matrix==suchwert);

und dachte, dass row column und value dann gefüllt werden wenn etwas gefunden wird - es wird jedoch nichts in r,c,v gespeichert obwohl der wert definitiv vorkommt.

mache ich etwas falsch ?

ich bin dankbar für jeden Tipp oder auch alternative Lösungen -
eine ineinanderverschachtelte for schleife geht zwar auch, ist aber absolut nicht performant und läuft 100 Jahre (warscheinlich)


Vielen Dank

Flo


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 14.03.2012, 14:07     Titel:
  Antworten mit Zitat      
Bist du dir wirklich sicher, dass der Wert vorkommt oder werden evtl. nicht alle Stellen angezeigt? Der Aufruf ist richtig jedoch ist die Zahl wohl nicht in der Matrix. Lass dir mal alle Stellen ausgeben.

Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 14.03.2012, 14:10     Titel:
  Antworten mit Zitat      
sonst im notfall nicht == nehmen sonder x>wert-dx && x<wert+dx
Private Nachricht senden Benutzer-Profile anzeigen
 
Flol

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2012, 14:47     Titel: Dankesehr !
  Antworten mit Zitat      
DSP: Gute Idee, darauf bin ich noch nicht gekommen, werde das gleich checken

Winkow: Vielen Dank, das ist eine super Idee - koennte das von DSP genannte Problem lösen !
soetwas hatte ich für spaeter eh geplant !

ich schreibe sobald ich was genaueres weis, vielen dank euch beiden schonmal !
 
Flol

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2012, 15:04     Titel: Ja !
  Antworten mit Zitat      
ha, genau das war das problem ! die letzten stellen wurden mir nicht angezeigt - habe schon an meinem verstand gezweifelt !

das mit dem plusminuswert ist eine super idee, geht aber innerhalb der find funktion nicht

??? Operands to the || and && operators must be convertible to logical scalar values.

leider auch wenn ich die werte in einer extra variable speichere und in die funktion einsetze ....habt ihr eine idee ? ich wuerde gerne die Stellengenauigkeit der werte behalten...

Vielen Dank für eure Hilfe !
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 14.03.2012, 15:20     Titel:
  Antworten mit Zitat      
versuch es mal mit & ich verwechsel die immer Smile
Code:
matrix=rand(4);
[r,c,v]=find(matrix>0.4 & matrix< 0.6);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.03.2012, 15:31     Titel:
  Antworten mit Zitat      
Hallo,

was Winkow vorschlägt, stimmt natürlich. Üblicher (und vielleicht übersichtlicher) wäre,
Code:
matrix==suchwert
durch
Code:
abs(matrix - suchwert) < tol
mit einer zu definierenden Toleranz tol zu ersetzen.

Zu &, | und &&, ||:
&&, || sind "short circuit" Operationen und vermeiden überflüssiges Testen, wenn das Ergebnis schon klar ist. Funktioniert aber nicht bei Vektoren.
&, | wertet alle Bedingungen aus und dauert daher länger, funktioniert aber auch bei Vektoren.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2012, 16:23     Titel: danke
  Antworten mit Zitat      
Ah vielen Dank Harals für die Erklärung !

So funktioniert es wunderbar, ihr seid spitze !

Vielen Dank !
 
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.