Verfasst am: 25.07.2012, 10:55
Titel: Entwicklung Anonymous function
Hallo zusammen,
ich habe eine Frage und zwar will ich folgende Funktion implementieren:
f(x,y)=summe_(j=1)^m summe_(i=1)^n u_ji*v_i(x)*p_j(y)
Also ich habe die Koeffizienten u_ji bestimmt und die Funktionen v_i, p_j sind definiert.
Mir ist nur folgendes eingefallen:
Code:
umh=@(x,y)(0);
for j=1:m
for i=1:n
umh=@(x,y)(umh(x,y)+u((j-1)*n+i).*v{i}(x).*p{j}(y));
end end
Dabei ist u mein Vektor mit den Koeffizienten (dabei ist für die ersten n einträge m=1, dann n einträge mit m=2 usw. ), v, p sind cell arrays mit function handles von den einzelnen v_i, p_j.
n und m sind feste Zahlen, also keine Variablen oder so.
Das Problem ist nun, wenn n und m zu groß sind, bekomme ich den Fehler maximum recursion limit erreicht. Ich rufe die Funktion umh anscheinend zu oft auf. Hat jemand eine andere Idee wie ich diese Entwicklung darstellen kann, sodass das Ergebnis wieder ein function handle ist.
Danke für die Hilfe
zum Zweiten werden hier ja v(x) und p(y) für jedes j und i berechnet, obwohl sie ja von
i bzw. j unabhängig sein. Je nachdem, wie komplex die Funktionen sind, kann es enorme
Geschwindigkeitsvorteile bieten, die Werte vor der Schleife vorzuberechnen:
liefert bei mir auch eine Fehlermeldung. Aber ich weiß auch gar nicht wozu ich das mache?
Das u ist ein Vektor, weil ich den aus dem Lösen eines Gleichunsgsystem bekomme.
Dein letzter Vorschlag mit den Vektoren klappt leider auch nicht bei mir, da bekomme ich den Fehler
Code:
??? Error using ==> cellfun
Non-scalar in Uniform output, at index 1, output 1.
Set 'UniformOutput' to false.
Vielleicht weißt du was ich da falsch mache?
Ansonsten erstmal vielen Dank für den ersten Vorschlag mit dem Auslagern von einer extra Funktion, damit klappt es ja erstmal.
Viele Grüße,
Anni
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.