Verfasst am: 02.02.2012, 18:34
Titel: allg. Problem beim function schreiben
hallo,
ich will folgende function schreiben:
function [PopulationComp] = projection(x0,t)
x0=input('vector with start population(x0)');
t=input('time period: ');
....
....
Error: Function definitions are not permitted in this context.
Ich will x0 und t quasi als input eingeben aufgrund der eingegebenen werte die funktion durchlaufen lassen.
wenn ich das ganze ohne funktionszeile durchlaufen lasse, funktioniert es auch. was könnte an dieser definition der funktion falsch sein?
hat jemand eine allgemeine idee ohne den quellcode sehen zu müssen, könnte ihn natürlich auch posten aber die zwei werte im input kommen auch wirklich in dem funktionsquellcode vor.
vielen dank für ideen, hab noch keine erfahrung mit solchen funktionen deswegen bitte auch die naheligendsten hinweise posten ^^
(immer noch das gleiche, irgendwie kann der bezug zu x0 und t nicht hergestellt werden, weil die unterringelt sind, obwohl sie definiert werden.... :/ )
Code:
function[PopulationComp] = projection(x0,t) % calculates the composition of a population: % after t years and from a starting population x0 % by using a given Matrix L including % probabilities and reproduction rates of each age class
x0 =input('vector with start population(x0)');
t =input('time period: ');
s = 0:t;
figure(2);
plot(s,G') title('composition') xlabel('Time period') ylabel('Percentages') legend('First age class', 'Second age class', 'Third age class', 'Fourth age class', 'Fifth age class', 'Sixth age class')
function[PopulationComp] = projection(x0,t) % calculates the composition of a population: % after t years and from a starting population x0 % by using a given Matrix L including % probabilities and reproduction rates of each age class
x0 =input('vector with start population(x0)');
t =input('time period: ');
wofür hast du in der ersten zeile x0 und t als übergabeparameter definiert?
die werden natürlich mit der eingabe von x0 und t in den letzten beiden zeilen in dem auschnitt hier überschrieben.
also wenn du in einem m file die funktion mit deinen parameter x0 und t schon aufrufst, dann solltest du die erneute eingabe von x0 und t löschen.
wofür hast du in der ersten zeile x0 und t als übergabeparameter definiert?
die werden natürlich mit der eingabe von x0 und t in den letzten beiden zeilen in dem auschnitt hier überschrieben.
Das sollte aber keinen Error auslösen, sondern wenn überhaupt eine MLint-Message. Und in der Tat, wenn ich die Funktion bei mir benutze, funktioniert sie (bis auf die inv(V)-Zeile).
aber das wesentliche problem ist die funktion, die muss irgendwie laufen.
wenn ich das:
x0 =input('vector with start population(x0)');
t =input('time period: ');
rausnehme und vor dem bentzen der funktion definiere ( x0=[2;2;2;2;2;2] , t=20 ) sind die beiden variablen nicht mehr rot unterringelt (in der funktion) aber es funktioniert trotzdem nicht.
FEhlermeldung:
function [PopulationComp] = projection(x0,t)
|
Error: Function definitions are not permitted in this context.
ich glaube das problem war nur, dass ich die funktion komplett markiert habe,
rechts klick --> evaluate selection --> dann kommt nach wie vor die fehlermedlung;
wenn ich aber im matlab command window
[PopulationComp] = projection(x0,t) geht es. allerdings nur wenn ich x0 und t vorher definiert habe.
Ist es auch möglich die beiden variablen als input in die funktion zu schreiben oder ist es unumgänglich beide vorm starten der funktion zu definieren?
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.