bekommst du denn tatsächlich noch die im Titel angegebene Fehlermeldung? Du solltest dir darüber im klaren sein, dass du FMINSEARCH in einer Form verwendest, die nicht dokumentiert ist und daher immer ein gewisses Risiko birgt.
Zusätzliche Parameter übergibt man normalerweise in einer anderen Form, siehe die Beispiele in der Doku zu FMINSEARCH.
In myoptimize verwendest du diverse Variablen, die nicht übergeben werden. Meine Empfehlung wäre, sämtliche Parameter (dpx, dpy) etc. in eine Struktur zu packen und sie als zusätzlichen Parameter zu übergeben - wenn es funktioniert, dann ebenso wie u und v, andernfalls wie in der Doku beschrieben.
Grüße,
Harald
dennisMUC
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2011, 16:26
Titel:
Hallo Harald.
Vielen Dank erstmal für deine prompte Antwort.
Leider komme ich mit deiner Erläuterung nicht zurecht.
Die im Titel angeführte Fehlermeldung "FMINSEARCH only accepts inputs of data type double" bekomme ich nach Ausführen der obersten Mainroutine.
(Mein Fehler im übrigen, daß ich sie hier .h genant habe, muss natürlich .m heißen)
Ich konnte mich wie gesagt, nur an das untere einfachere Programm halten und mit meiner Problemstellung verknüpfen.
Ich weiß aus der Dokumentation, daß die korrekte Syntax
meine Befürchtung ist, dass diese undokumentierte Syntax in dem einfachen Fall funktioniert, im komplexeren aber nicht.
Bei einer derartigen Menge an Parametern ist das Arbeiten mit einer Parameterstruktur am sinnvollsten. In deinem Fall benötigst du nur zwei Notationen:
Code:
param.feld = daten; % belegen eines Feldes einer Struktur
daten = param.feld; % extrahieren der Informationen
%Sample-Data in Abhängigkeit von width, height der Kamerakalibrierung
for i=1:10
param.u(i) = (width / (10+1)) * i;
param.v(i) = (height / (10+1)) * i;
end
x = fminsearch(@(x) myoptimize(x, param), x0, [], u, v);
Langfristig wäre es natürlich gut, auch die Hilfsfunktionen so umzuschreiben, dass du nicht alle Argumente einzeln, sondern vielleicht zwei Strukturen - eine mit den Variablen, eine mit den Parametern - übergibst.
Grüße,
Harald
dennisMUC
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 05.12.2011, 00:09
Titel:
Vielen Dank nochmal für deinen Beitrag, Harald.
Ich bin dem Fehler selber auf die Schliche gekommen, ich hätte mich nur mehr auf die Fehlermeldung an sich versteifen sollen.
Deine allgemeinen Programmiertips haben meinem Code mehr Struktur verschafft, hat sich also trotzdessen gelohnt hier zu posten.
Zur Lösung des Problems:
fminsearch benötigt unbedingt double-Werte als Startwerte.
in meinem Fall musste ich also aus width/2 und height/2 -> double(width/2) und double(height/2) machen.
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
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.