How to access workspace variables one by one using m-script

Hello,
I would like to read all workspace variables into array and check whether the name of variable is Matlab keyword or not. For example, I have four variables in workspace(a = 1;b=2;c=3;d=4;). I want to check if the varaible is keyword or not using matlab inbuilt function(iskeyword()) like below.
iskeyword('a')
ans =
0
>> iskeyword('if')
ans =
1
Is it possible check all base work space variables like this?

 採用された回答

Nobel Mondal
Nobel Mondal 2015 年 6 月 1 日

0 投票

You can get all the workspace variables like this:
>> varList = evalin('base', 'who');
Then check individual parameters:
>> iskeyword(varList{k}) % for k-th parameter

3 件のコメント

N/A
N/A 2015 年 6 月 1 日
Hello Nobel,
I tried your code syntax also:
a = 1;
b=2;
c=3;
d=4;
y = 'if';
varList = evalin('base','who');
for k=1 : length(varList)
result_1 = iskeyword(varList{k}) % for k-th parameter
end
when I run this code, I am getting empty varList. Is that correct ?
Nobel Mondal
Nobel Mondal 2015 年 6 月 1 日
編集済み: Nobel Mondal 2015 年 6 月 1 日
Ah, you're probably calling this from inside a function. You need to define the WorkSpace context: 'base' or 'caller'
Or else, you simply can try
>> varList = who;
If the scope isn't changing.
N/A
N/A 2015 年 6 月 1 日
編集済み: N/A 2015 年 6 月 15 日
Hello Nobel,
after small change for your syntax.I got what I need.
allBaseWorkspaceVar = evalin('base','whos');

サインインしてコメントする。

その他の回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2015 年 6 月 1 日

0 投票

a = 1;
b=2;
c=3;
d=4;
s1=whos
out=cellfun(@iskeyword,{s1.name})

4 件のコメント

N/A
N/A 2015 年 6 月 1 日
Hello Azzi,
thanks for reply..I tried your code:
a = 1;
b=2;
c=3;
d=4;
y = 'if';
s1=whos;
out=cellfun(@iskeyword,{s1.name})
output :
out =
0 0 0 0 0
It should returns last element '1'. could you please let me know why its not giving expected result?
Azzi Abdelmalek
Azzi Abdelmalek 2015 年 6 月 1 日
in your example, the name of your variable is 'y', not 'if'
N/A
N/A 2015 年 6 月 1 日
but when I type command "iskeyword(y)" , Matlab returns value '1'
what is that mean?
Azzi Abdelmalek
Azzi Abdelmalek 2015 年 6 月 1 日
Maybe you need this
s1=whos
s2={s1.name}
for k=1:numel(s1)
out(k)=iskeyword(eval(s2{k}))
end

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeVariables についてさらに検索

製品

質問済み:

N/A
2015 年 6 月 1 日

編集済み:

N/A
2015 年 6 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by