|
|
Maximum eines Funktionsintervalls |
|
jig |

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 15.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.06.2011, 16:53
Titel: Maximum eines Funktionsintervalls
|
 |
Hallo an euch alle.
Ich habe eine Funktion geschrieben, die endlich auch so funktioniert wie sie soll. Nun möchte ich aus ihren Berechnungen das Maximum bestimmen. Doch leider funktioniert das nicht mit dem max Befehl. Hat vielleicht jemand eine Idee.
Hier mein Code
Wenn ich die Funktion jetzt plotte mit:
figure; fplot('test',[0 0.5]); title('Stern');
Dann sieht sie auch genauso aus, wie sie aussehen soll. Doch leider kann ich nicht einfach mit:
max(test)
ihr Maximum bestimmen (auf dem Intervall [0, 0.5]). Kann mir vielleicht jemand eine Hilfestellung geben. Ich konnte bisher im Forum nichts ähnliches Finden.
Gruß jig
|
|
|
|
|
Skai |

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 23.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.06.2011, 16:59
Titel:
|
 |
Hallo,
_________________
Grüße Skai
|
|
|
jig |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 15.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.06.2011, 22:31
Titel:
|
 |
Hallo Skai,
leider funktioniert dieser Befehl so nicht bei mir. Es gibt die folgende Fehlermeldung:
??? Error using ==> mpower
Matrix must be square.
Error in ==> test at 16
P = 1/n * (sumcos)^2 + 1/n * (sumsin)^2;
Da die Funktion auch nur interessant ist auf dem Intervall [0,0.5] möchte ich auch nur das Maximum aus diesem Bereich. Der Plot der Funktion ist ja richtig. (Ich hab das Beispiel aus einem Buch) Und anhand des Plots erkennt man auch, dass das Maximum etwa bei 0.0345 liegt.
Mit deiner Funktion erhalte ich allerdings:
maximum =
3.0536e-027
Das ist laut Plot (und Buch) falsch. Hast du vielleicht noch eine andere Idee die mir helfen könnte.
Vielen Dank schonmal im Voraus
gruß jig
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.06.2011, 23:44
Titel:
|
 |
Hallo jig,
Zitat: |
leider funktioniert dieser Befehl so nicht bei mir. Es gibt die folgende Fehlermeldung: |
Zitat: |
Mit deiner Funktion erhalte ich allerdings:
maximum = 3.0536e-027 |
Wie kann die Funktion gleichzeitig eine Fehler erzeugen und einen falschen Wert erzeugen?
Gruß, Jan
|
|
|
jig |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 15.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.06.2011, 08:29
Titel:
|
 |
Hallo Jan S
stimmt, ist eigentlich Blödsinn...
Ich meinte auch, dass ich bei der Eingabe:
maximum = max(test(0:0.5))
erhalte:
maximum =
3.0536e-027
das ist ja falsch. Und da hab ich gedacht vllt liegt es an dem Intervall [0 0.5] also hab ich andere Befehle ausprobiert wie:
maximum = max(test(0:0.000001:0.5))
oder
maximum = max(test(0:5))
oder
maximum = max(test(1:5))
und da erhielt ich dann den Fehler
?? Error using ==> mpower
Matrix must be square.
Error in ==> periodogramtest at 16
P = 1/n * (sumcos)^2 + 1/n * (sumsin)^2;
Ich hoffe das war jetzt verständlicher... Sorry nochmal...
Gruß jig
|
|
|
andrej13 |

Forum-Fortgeschrittener
|
 |
Beiträge: 60
|
 |
|
 |
Anmeldedatum: 05.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.06.2011, 08:56
Titel:
|
 |
Hallo Jig,
weil so bald du einen Vektor übergibst sind die Variablen Sumcos und sumsin auch Vektoren. Dann passt natürlich diese Funktion auch nicht mehr. P = 1/n * (sumcos)^2 + 1/n * (sumsin)^2;
Du musst diese glaub ich so schreiben
P = 1./n. * (sumcos).^2 + 1./n. * (sumsin).^2;
|
|
|
jig |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 15.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.06.2011, 10:00
Titel:
|
 |
|
 |
|
Hallo andrej13
Ich habe deinen Vorschlag ausprobiert und erhalte jetzt:
>> maximum = max(test(0:0.5))
maximum =
3.0536e-027
>> maximum = max(test(0:5))
maximum =
2.0254e-024
Verstehe hier schon nicht, warum als maximaler Wert auf [0 0.5] und auf [0 5] verschiedene Werte resultieren die beide im Intervall [0 0.5] liegen???
Weiterhin erhalte ich:
>> maximum = max(test(1:5))
maximum =
2.0254e-024
Wie kann er mir einen maximalen Wert in dem Intervall [1 5] berechnen, der außerhalb dieses Intervalls liegt???
Schön ist, dass er jetzt keinen Fehler mehr ausgibt. Nur sind die Ergebnisse ja leider immer noch nicht richtig...
Möchte ich einen bestimmten Funktionswert erhalten so berechnet MATLAB:
>> test(2.0254e-024)
ans =
3.0536e-027
>> test(0.1)
ans =
1.6308
FALSCH: müsste etwa bei 0.6 liegen
>> test(0.3)
ans =
0.2109
FALSCH: müsste etwa bei 0.16 liegen
>> test(0.03)
ans =
127.6647
scheint richtig zu sein!!!
>> test(0.0345)
ans =
1.6714e+004
FALSCH: müsste etwa bei 11900 liegen
Diese Werte sind nahezu alle Falsch... Wo liegt mein Fehler... ? Wenn ich doch den Plot richtig dargestellt bekomme...?
Danke für jede Hilfe die ich bekomme
gruß jig
|
|
|
andrej13 |

Forum-Fortgeschrittener
|
 |
Beiträge: 60
|
 |
|
 |
Anmeldedatum: 05.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.06.2011, 13:31
Titel:
|
 |
also es sind nicht die Vektoren, die du brauchst
Was steht in der Stern variable?
Also so müsste es gehen, gibts aber sicherlich eine bessere Methode.
P = 0;
for i=0:0.0001:0.5
P=[P;test(i)]
end
max(P)
Zu den Intervallen noch:
Wenn du maximum im Intervall [0 0.5] (x-Achse) suchst muss dieses doch nicht im gleichem Intervall liegen auf der y-Achse
|
|
|
jig |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 15.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.06.2011, 15:32
Titel:
|
 |
Also
X = Stern;
ist ein Spaltenvektor der Länge n = 600.
Letztendlich möchte ich aus der Funktion test(l) das Funktionsargument ausgegeben bekommen, dessen Funktionswert der maximale der Funktion test() ist.
Also ich hab mal jeweils den plot von "Stern" und "test von Stern" (im Intervall [0 0.5]) angehängt. In "test von Stern" sieht man deutlich 2 Peaks zwischen 0.02 und 0.05. Ich möchte jetzt, dass mir meine Funktion test(l) am Ende ausgibt:
Das Maximum von Stern liegt bei l = 0.034
(also irgendwo da in der Nähe)
Vielleicht gehe ich die Sache ja auch völlig falsch an... Mir fällt nur absolut keine Lösung für mein Problem ein...
gruß jig
Beschreibung: |
|
 Download |
Dateiname: |
test von Stern.fig |
Dateigröße: |
2.88 KB |
Heruntergeladen: |
310 mal |
Beschreibung: |
|
 Download |
Dateiname: |
Stern.fig |
Dateigröße: |
3.39 KB |
Heruntergeladen: |
316 mal |
|
|
|
andrej13 |

Forum-Fortgeschrittener
|
 |
Beiträge: 60
|
 |
|
 |
Anmeldedatum: 05.03.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.06.2011, 15:54
Titel:
|
 |
Versuchs mal so:
k=0:0.001:0.5;
P=0;
for i=k
P=[P test(i)];
end
P=P(2:end);
k(P==max(P))
|
|
|
jig |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 15.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.06.2011, 16:39
Titel:
|
 |
Hallo andrej13,
vielen dank für deine Hilfe... Es funktioniert... ich bin ja so happy...
Auch wenn ich es noch nicht so ganz verstehe... aber jetzt beschäftige ich mich erstmal damit...
wünsch dir noch einen schönen nachmittag...
gruß
jig
|
|
|
|
|
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.
|
|