フィルターのクリア

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

19 ビュー (過去 30 日間)
gvreddy
gvreddy 2015 年 6 月 1 日
編集済み: gvreddy 2015 年 6 月 15 日
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 日
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 件のコメント
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.
gvreddy
gvreddy 2015 年 6 月 1 日
編集済み: gvreddy 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 日
a = 1;
b=2;
c=3;
d=4;
s1=whos
out=cellfun(@iskeyword,{s1.name})
  4 件のコメント
gvreddy
gvreddy 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

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

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by