|
|
|
max Funktion arbeitet nicht richtig |
|
| thomas0815 |

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.08.2010, 19:51
Titel: max Funktion arbeitet nicht richtig
|
 |
Hallo zusammen,
ich habe ein Problem mit der max Funktion. Ich habe einen Spaltenvektor mit 300 Elementen und aus diesen Elementen soll er mir das maximale Element raussuchen, was kleiner ist als eine bestimmte Zahl.
z.B.
max(V<=358.9606)
hierbei gibt mir Matlab das Element 1 aus, obwohl es den Wert 8000 hat, es gibt aber noch zig Elemente, die Werte < 8000 haben. Woran liegt das?
Grüße,
Thomas
|
|
|
|
|
|
| Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 30.08.2010, 20:18
Titel:
|
 |
Hallo,
weil (V<=358.9606) eine logische Operation ist, die nur Einsen und Nullen zurückgibt. Dabei ist der Maximalwert von einem logischen Vektor nunmal immer 1 und max gibt dir die Stelle der ersten eins im Vektor zurück.
Du könntest es ja z.B so machen (geht bestimmt noch eleganter):
MFG
Sco
|
|
|
|
| Fourier |

Forum-Guru
|
 |
Beiträge: 329
|
 |
|
 |
Anmeldedatum: 05.04.10
|
 |
|
 |
Wohnort: Karlsruhe
|
 |
|
 |
Version: 2009b
|
 |
|
|
 |
|
Verfasst am: 30.08.2010, 20:28
Titel:
|
 |
man kanns noch kompakter machen ;).
nur bin jetzt verwirrt ist es "<" oder ">"
viele grüsse
_________________
Ein schlechter General ist besser als zwei gute.
|
|
|
|
| thomas0815 |
Themenstarter

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 15:25
Titel:
|
 |
Hallo Forier,
wenn ich das so schreibe, wie du vorgeschlagen hast, dann gibt er mir nur 1en raus. Bei dem was ich zuerste geschrieben habe, war es so, dass der Index einiger Elemente richtig ausgegeben wurde. Wenn ich den Vektor dann jedoch mehr als als 126 Elemente gebe, dann funktioniert das nicht mehr richtig.
ich betreibe es in zwei for-Schleifen und habe es genau so geschrieben:
Woran kann das nur liegen?
Zuletzt bearbeitet von thomas0815 am 31.08.2010, 16:02, insgesamt einmal bearbeitet
|
|
|
|
| Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 15:35
Titel:
|
 |
Hallo,
also was moechtets du denn nun? In deimen ersten Post hasst du geschrieben, dass du 'das maximale Element raussuchen' moechtest, also einen bst Wert. Nun mehrere?
Am besten du gibst mal ein konkretes Beispiel, da Fouriers Loesung fuer die Frage in deinem Eingangspost passt.
MFG
Sco
|
|
|
|
| thomas0815 |
Themenstarter

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 16:06
Titel:
|
 |
Hallo,
ja, ich betreibe es in zwei for-Schleife - für jeden Wert_in(i,j) soll das max Element, was kleiner ist als der Wert heraus gesucht werden. Das funktioniert solange nicht mehr als 126 Elemente im Vektor V sind. Sind es mehr z.B. 400, dann steht bei bei b_in(i,j) für die i>126 immer nur noch Element 127 in jedem b_in(i,j) da ... keine Ahnung woran das liegt. Es wird einfach falsch ausgewertet --- bin langsam schon echt verzweifelt.
Grüße,
Thomas
|
|
|
|
| Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 16:32
Titel:
|
 |
Hallo,
also 1. ist das wass du hingeschrieben hasst nicht mit dem von Fourier identisch:
deins :
Fouriers:
Vielleicht liegt es ja schon daran. Ansonsten ist es natuerlich schwer nachzuvollziehen ohne die Werte zu kennen, die im Vektor V und Wert_in enthalten sind. Ich meine es koennte ja sein, dass ab i = 126 der Maximalwert des Therms V(V<=Wert_in(i,j)) wirklich immer an der Stelle 127 ist?
Vielleicht auch ein Problem mit dem Zahlenformat? Probier halt mal die Variablen a_in1 und b_in als double zu deklarieren ( double(a_in1(i,j)) ).
MFG
Sco
|
|
|
|
| thomas0815 |
Themenstarter

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 17:03
Titel:
|
 |
Hallo Sco,
nein, es liegt nicht daran, dass der Code nicht identisch ist, ich habe beide Varianten ausprobiert. Der von Fourier gibt mir nur 1en aus.
Das der maximalwert immer auf das 127. Element fällt, kann auch nicht sein.
Das merkwürdige ist, wenn ich mein Programm durchlaufen lasse und dann einzelne Auswertungen dazu im command window mache, dann werden die richtigen indizes ausgegeben ... ich verstehe das nicht!
|
|
|
|
| thomas0815 |
Themenstarter

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 17:25
Titel:
|
 |
Hallo Helfende,
ich habe das Problem gefunden. b_in war als int8 definiert ... ich blicke durch mein Programm schon nicht mehr so richtig durch.
|
|
|
|
| Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 17:41
Titel:
|
 |
Hallo,
hatte ich ja auch schon vermutet, da 127 eben gerade int8 ist .
Aber trotzdem kann ich nicht nachvollziehen warum du diese Zeile verwendest:
Das macht fuer mich einfach keinen Sinn, da du immer das Maximun von 1 ermittelst und nur den Index der ersten 1 im Vektor bekommst.
Das waere genau das gleiche wie:
und das ist wirklich was du willst?
MFG
Sco
|
|
|
|
| thomas0815 |
Themenstarter

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 18:43
Titel:
|
 |
nein, das ist nicht das was ich möchte,
aber dieser Code funktioniert tatsächlich für das was ich brauche. Es wird der Index des größten Elements aus V ausgegeben, das kleiner als der Wert ist. in a_in steht der Wert des Elements und in b_in der Index zu diesem Wert. Es wird nirgendwo 1 ausgegeben.
Grüße,
Thomas
|
|
|
|
|
|
|
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 - 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.
|
|