|
|
| Sky |

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 10.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.04.2012, 18:19
Titel: Lokale Minimas finden
|
 |
Hallo Leute,
nach dem das mit der ersten Frage so gut geklappt hat hier gleich mein nächstes Problem.
Ich habe zwei einzelne Zeilenvektoren mit jeweils 10.000 Messpunkten. Diese beiden plotte ich dann und erhalte somit einen Graphen.
Nun möchte ich gerne die Anzahl der Minimas dieser Graphik mathematisch berechnen lassen und nicht nur so "ungefähr" ablesen.
Ich habe hier im Forum diesen Code gefunden:
minima=x(find(diff(sign(diff([0,x,0])))>0));
Das liefert mir aber wenn ich für x den Vektor einsetzte folgenden Fehler:
Error using horzcat
CAT arguments dimensions are not condsten
Ich habe die Spaltenvektoren vorher zu einem Zeilenvektor transponiert und dann die beiden einzelnen Vektoren zu einem zusammengefasst, weil ich ja mit den beiden zusammen auch die Funktion plotte.
Jetzt ist eure Hilfe gefragt.
MFG
|
|
|
|
|
|
| n.force |

Forum-Century
|
 |
Beiträge: 118
|
 |
|
 |
Anmeldedatum: 02.03.12
|
 |
|
 |
Wohnort: nähe Magdeburg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.04.2012, 18:44
Titel:
|
 |
Du hast ja in deinem Vektor nur Messpunkte. Deshalb fallen Funktionsoperationen aus. Du kannst du einer schleife bauen, die immer guckt ob das nächste element noch kleiner ist, als das kleinste davor
So ungefähr
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.04.2012, 20:48
Titel:
|
 |
Hallo,
die Strategie sieht nicht schlecht aus, auch wenn ich vom Anfügen der Nullen wenig halte. Beim Einsetzen scheint aber wohl was schiefgegangen zu sein. Welche Dimensionen hat der Vektor, den du für x einsetzt? x ist in dem Code ein Zeilenvektor.
Grüße,
Harald
|
|
|
|
| Sky |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 10.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.04.2012, 11:20
Titel:
|
 |
Ah da wird wohl der Fehler liegen. Der Vektor den ich da habe ist ein Spaltenvektor. Werde es mal ausprobieren und dann eine Rückmeldung geben.
MFG
|
|
|
|
| Sky |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 10.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.04.2012, 10:27
Titel:
|
 |
Ich habe gesehen das ich eine Funktion gegeben habe auf der das alles aufbaut.
syms Io1 Io2 Iph I Rs Rp U Ut
I=Iph-Io1*(exp((U+I*Rs)/Ut)-1)-Io2*exp((U+I*Rs)/Ut)-1)-(U+I*Rs)/Rp;
diff(I,U)
crit_pts=solve(ans)
So die erste Ableitung ist für Matlab kein Problem, aber wenn ich dann versuche die Extrempunkte zu bestimmen kommt folgende Fehlermeldung:
Warning: Explicit solution could not be found
crit_pts=[empty sym]
Muss ich das dann nummerisch Ableiten? Und wenn ja wie geht das.
MFG
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.04.2012, 10:53
Titel:
|
 |
Hallo,
ich würde die Ableitung schon noch symbolisch bilden.
Dann (oder auch davor; sollte keinen Unterschied machen) mit SUBS die Werte für die anderen Variablen einsetzen, mit MATLABFUNCTION in ein Function Handle umwandeln und dann mit FZERO oder FSOLVE die Gleichung lösen.
Oder, da es anscheinend um eine Minimum-/Maximumsuche geht, direkt mit beispielsweise FMINUNC oder FMINBND arbeiten.
Grüße,
Harald
|
|
|
|
| Sky |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 10.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.04.2012, 14:26
Titel:
|
 |
Hey,
also irgendwo klemmt es noch mit der Funktion subs.
Ich schreibe:
subs(f,[I Iph Is1 Is2 N1 N2 Rp Rs U Ut],[dann die jeweiligen Werte])
Jedoch setzt er in der Formel den Wert für I nicht ein, jedoch alle anderen. Verstehe nicht warum
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.04.2012, 20:11
Titel:
|
 |
Hallo,
stimmt die Anzahl der Werte?
Ich kann das Problem jedenfalls so nicht reproduzieren. Beispielcode wäre hilfreich.
Grüße,
Harald
|
|
|
|
| Sky |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 10.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.04.2012, 06:56
Titel:
|
 |
Nun werden in dem Ergebnis von Ableitung alle Werte bis auf I eingesetzt.
MFG
|
|
|
|
| Sky |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 10.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.04.2012, 07:16
Titel:
|
 |
Problem fürs erste gelöst. Hatte gestern wohl einen Knick in der Optik. Habe die Formel für I falsch in Matlab übertragen . Jetzt funktioniert es.
Vielen Dank für die Hilfe.
Aber ich meld mich bestimmt bald wieder.
MFG
|
|
|
|
| Sky |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 10.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.05.2012, 12:43
Titel:
|
 |
| |
 |
|
Hallo,
jetzt habe ich nochmal eine Frage zu finden von lokalen Minimas.
Im anhang findet Ihr eine IU-Kennlinie. In dieser ist ein Minimum zu sehen. Dieses möchte ich finden. Die Grafik bekomme ich durch die beiden Zeilenvektoren Imodul (1,10000) und Umodul (1,10000).
Ich habe folgende Funktion dafür verwendet:
Da kommen dann aber Werte raus.
20.1291353883817 20.8089031503706 21.2052631976545 21.4034432211181 21.7998032676886 22.3943433366524 22.5925233594026 22.9888834045461 23.3852434492141 23.5834234713697 24.1779635371230 24.5743235803640 25.1688636443338 25.5652236863857 25.9615837279620 26.5561237894347 26.7543038096878 27.1506638498372 27.5470238895110 27.7452039091695 28.1415639481299 28.5379239866146 28.9342840246237 29.1324640434498 32.0331115145454
Wobei das Minima aus Grafik wenn ich diese vergrößere bei 20,2 und 36,5 liegen.
Hat da jemand eine Lösung?
MFG
| Beschreibung: |
|
 Download |
| Dateiname: |
IU-Kennlinie.png |
| Dateigröße: |
2.34 MB |
| Heruntergeladen: |
545 mal |
|
|
|
|
| MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 15.05.2012, 13:37
Titel:
|
 |
Hallo,
lokale Extremwerte findet man über Vorzeichenwechsel. Hier ein Beispiel:
Um lokale Maxima zu finden kann statt des ~= ein < verwendet werden und für die Minima ein >.
Grüße, Marc
|
|
|
|
|
|
|
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.
|
|