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

Hilfe zur Funktion find()

 

ZeusII
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2012, 14:31     Titel: Hilfe zur Funktion find()
  Antworten mit Zitat      
Hallo Leute!

ich habe da ein kleines Problem, was sich nicht lösen lässt...
also ich möchte aus einem Array xi der länge 100001 nach einem bestimmten Wert v_Mittel suchen,wobei dieser Wert nur einmal im Array vorkommt und mir den Index zeigen lassen, was eigentlich laut Matlab-Hilfe mit der Funktion index= find(x==v_Mittel) klappen sollte
hier der Code nochmal:
v_Mittel = mean(v_Teil);
index_FrequenzSpitze = find(xi==v_Mittel);
disp('index_FrequenzSpitze = ');
disp(index_FrequenzSpitze)
doch jedes Mal bekomme ich eine leere Matrix als ergebnis, obwohl der gesuchte Wert in dem Array xi wohl existiert
kann mir da jemand weiter helfen?

Danke schon mal
Private Nachricht senden Benutzer-Profile anzeigen


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 03.07.2012, 17:00     Titel:
  Antworten mit Zitat      
Hallo ZeusII,

ich kann deinen Fehler nicht reproduzieren. Bei mir tut dein Code genau was er soll. (Und benutze bitte die Codeumgebung, ist anschaulicher)

Code:
v_Teil=[1 2 3 4 5 6 7 8 9]; % Mean=5
xi=[1 2 3 4 5 6 7 8 9 10 5];
v_Mittel = mean(v_Teil);
index_FrequenzSpitze = find(xi==v_Mittel);
disp('index_FrequenzSpitze = ');
disp(index_FrequenzSpitze)
 


Da kommt dann 5 und 11 raus. Bei dir auch?

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
ZeusII
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2012, 18:46     Titel:
  Antworten mit Zitat      
Hallo Kascho!

erstmal Danke für die schnelle Antwort Smile
solange man das wie du mit Integer-Werten macht funktioniert alles wunderbar, problematisch wird´s dann wenn man float- oder double-Werte auf Gleichheit überprüfen will. Aufgrund der Rechenungenauigkeit mit der Matlab arbeitet sind diese unter Umständen nie gleich und somit bleibt das Ergebnis eine leere Matrix...Ich hab das Problem jetzt schon selbständig gelöst in dem ich nicht auf Gleichheit sondern auf >= überprüfe, das geht bei mir deswegen weil mein Daten-Array schon sortiert ist und alle Elemente nur einmal vorkommen
trotz allem Dank ich dir noch mal für deine Unterstüzung
Ich finde den Forum hier richtig gut und werde bestimmt öfters mal reinschauen

Gruss ZeusII
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: 03.07.2012, 21:42     Titel:
  Antworten mit Zitat      
Hallo,

auf Gleichheit prüfen ist immer problematisch, wenn es sich in irgendeiner Form um errechnete Werte handelt. Das ist übrigens in jeder numerischen Programmiersprache so Wink
Deswegen würde ich immer auf geringe Abweichung statt Gleichheit testen, also statt x == y lieber abs(x-y) < toleranz.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2012, 22:09     Titel:
  Antworten mit Zitat      
Hallo Harald

ja da hast du wohl recht, ich glaube, den Fehler muss man einfach mal gemacht haben, damit man beim nächsten Mal erst gar in die Versuchung kommt Very Happy
Auf jeden Fall hab ich aus meinem Fehler gelernt Smile
Gruss
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.