|
rcsapo |

Forum-Fortgeschrittener
|
 |
Beiträge: 55
|
 |
|
 |
Anmeldedatum: 11.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.04.2010, 23:40
Titel: fzero für Nicht-Skalare
|
 |
Liebe Matlab-Experten,
Wenn a, b und p0 als einfache Skalare vorliegen, kann ich die definierte Funktion
problemlos nach ihrer Nullstelle absuchen mittels
wobei ich die Nullstelle im Bereich 10 erwarte.
Ich aber habe etwa 40 verschiedene a-b-p0-Kombinationen. Da fzero nur Skalare akzeptiert, erhalte ich bei diesen Input-Parametern die bekannte Fehlermeldung ?? Operands to the || and && operators must be convertible to logical scalar values.
Wie krieg ich es hin, fzero für alle 40 Fälle gleichzeitig aufzurufen (also mit 3 Vektoren anstelle von 3 Skalaren als Input).
Vielen Dank,
Robert.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.05.2010, 10:20
Titel:
|
 |
Hallo,
ich denke mal, du suchst für jede Kombination (a, b, p0) eine Nullstelle?
Dann wird eine Schleife über fzero (siehe vorherige Posts) das geschickteste sein.
Andernfalls wäre fsolve die Verallgemeinerung zu fzero, aber ich denke nicht, dass das hier sinnvoll ist, sondern der obere Weg.
Grüße,
Harald
|
|
|
rcsapo |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 55
|
 |
|
 |
Anmeldedatum: 11.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.05.2010, 11:52
Titel:
|
 |
Hallo Harald,
wenn ich das richtig verstehe, dann gebe ich wieder meine Input-Parameter a, b und p0 (als Spalten-Vektoren) an.
Dann definiere ich für jede dieser Kombinationen mittels
die passende Funktion.
Soweit richtig? Beim Ermitteln der jeweiligen Nullstellen stehe ich aber an.
liefert einen Cell-Array mit 40 leeren und nur einer beschriebenen Zelle.
Was mach ich da falsch?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.05.2010, 13:02
Titel:
|
 |
Hallo,
Du musst natürlich den fzero-Befehl in die Schleife einbauen. Am einfachsten vielleicht so:
Grüße,
Harald
|
|
|
rcsapo |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 55
|
 |
|
 |
Anmeldedatum: 11.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.05.2010, 13:39
Titel:
|
 |
Ja klar, hätte daran denken müssen, dass auch der fzero-Befehl in die Schleife gehört. Warum aber muss ich zunächst einen Spaltenvektor mit lauter Nullen erstellen?
Der Code funktioniert jedenfalls bestens. Vielen Dank!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.05.2010, 15:08
Titel:
|
 |
Hallo,
das nennt sich Vorbelegung (preallocation).
Wenn eine Variable innerhalb einer for-Schleife dynamisch wächst (und dabei sehr groß wird), kann das zu Performance-Einbußen führen.
Stellen, an denen Vorbelegung sinnvoll ist, werden übrigens im Editor orange unterringelt - mal mit der Maus drauf gehen, dann kommen weitere Infos dazu.
Grüße,
Harald
|
|
|
rcsapo |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 55
|
 |
|
 |
Anmeldedatum: 11.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.05.2010, 15:28
Titel:
|
 |
Toll, mein erstes Script funktioniert! Sollte mir in Hinkunft einiges an Zeit ersparen. Vielen Dank für die geduldige Hilfe
|
|
|
|
|
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.
|
|