Filter löschen
Filter löschen

m file is not reading variables from the workspace

24 Ansichten (letzte 30 Tage)
Francisco
Francisco am 14 Jul. 2011
Bearbeitet: BA Lamine am 22 Apr. 2015
Hello,
I'm having problems with my script, it doesn't want to read the variables from the workspace. I tried several things, among them evalin and it still doesn't work. I don't want to have to copy the data and physically paste it to the script, does anybody knows how to solve this problem? I keep getting the error current has not been assigned, although the variable current is in the workspace already (this variable was created by another file). How can I call current from the workspace so the m file can read the variable?
Here is a short version of my file and I'm omitting the equations as they are pretty long.
Jphotototal=current(1,:); plot(lambda,Jphotototal,'ro'); hold on L0=[0.1 0.1]; options = optimset ('Maxiter',1000,'tolfun',1e-20,'TolX',1e-20,'MaxFunEvals',1000); L=lsqnonlin('recfun',L0,0,400,options);
Thanks, Francisco
  2 Kommentare
Chirag Gupta
Chirag Gupta am 14 Jul. 2011
Ensure that its a script and not a function.
Francisco
Francisco am 14 Jul. 2011
Hi Gupta,
It is actually a function, is there a way to bypass this problem? there must be a way to call the variables into the function file correct?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Chirag Gupta
Chirag Gupta am 14 Jul. 2011
Functions have their own workspaces. Scripts on the other hand run in the base workspace where you have your data.
You could always save your workspace data into a MAT file:
save ('filename','variable Name');
and then in your function use the command:
load('filename')
Apart from this you can use the following command:
VarName = evalin('base','VarNameFromBase')
and then use VarName in your function
  1 Kommentar
Francisco
Francisco am 14 Jul. 2011
Hi Gupta,
I already tried saving the data into a mat file and then loading it to the function file, but it didn't work! :( I'll try varname and hope that works. I was also told about assignin, so I'll try that too! :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Walter Roberson
Walter Roberson am 14 Jul. 2011
"current" is probably being defined in the workspace of a different function, unless that other function is using assignin('base',...)
  1 Kommentar
Francisco
Francisco am 14 Jul. 2011
Hi Walter,
That is correct, the variable current is acquired from a different script and it is located in the base workspace. My file is a function file and it only works if I physically copy and paste the variables into the file. I've never used assignin but I'll look into it and I hope this can solve the problem. Thanks! :)

Melden Sie sich an, um zu kommentieren.


Francisco
Francisco am 14 Jul. 2011
Hey guys, I tried loading the data again after noticing a mistake I had and voila, the file works!! :) Thanks for your help and for future reference, yes, saving the variables in a MAT file and then loading them to the function file does work!! :)
Thanks guys!!
Francisco

BA Lamine
BA Lamine am 22 Apr. 2015
Bearbeitet: BA Lamine am 22 Apr. 2015
Hello Gupta,
I tried to use the instruction
variableName_in_myFunction = evalin('ws', variableName_in_workspace);
the instruction doesn't work in the simulation in Simulink. Here the error that I had when I try to run the simulation : Error evaluating registered method 'Outputs' of M-S-Function myFunction in mySimulinkModel. Undefined function or variable variableName_in_myFunction.
Does someone had this error?
Would you please want to help me?
Thank you in advance and your collaboration.
Lamine

Kategorien

Mehr zu Standard File Formats finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by