How do I use the who command within a function

I am trying to use the who command within a function to make a list of the variables in the current workspace that match a given string.
Here is my little test function to get this portion working. In my case there are 6 variables that match the string so test should return "6". However, I always get 0. If I comment out the function line and run it as a script, it works fine. Is there a way to get the who command within a function to generate a list of variables from the current workspace?
function[test] = myfun()
%dev = 'R_A_bot';
%keys = strcat('IV','*',dev,'*');
vars = who ('IV*R_A_bot*');
test = length(vars);
Thank you.

 채택된 답변

Matt Fig
Matt Fig 2012년 9월 7일
편집: Matt Fig 2012년 9월 7일

0 개 추천

When a function is running, the current workspace is the workspace of the function. That is just how it works.
Why not just keep it as a script?
If you must have a function for some reason, you can use this line, with either 'caller' or 'base' depending.
vars = evalin('caller','who (''IV*R_A_bot*'')');

댓글 수: 1

Becca
Becca 2012년 9월 7일
Thank you, that worked.
That was just a snippet of code I wrote trying to solve the problem. I have several different scripts that I change a little here, a little there for each run. I am making each a function so I can choose which "scripts" to call and only have to change one thing and pass it through.
For example, in that one I will eventually pass in dev and assemble "keys" to use as the expression in who. Dev could be passed into say the 4 functions I run on that dataset.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

태그

질문:

2012년 9월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by