Variables scilab中who_用户的返回类型
我与scilab合作,但在项目期间,scilab必须处理大量变量。 我想知道我是否能做到以下几点Variables scilab中who_用户的返回类型,variables,memory-management,pseudocode,scilab,Variables,Memory Management,Pseudocode,Scilab,我与scilab合作,但在项目期间,scilab必须处理大量变量。 我想知道我是否能做到以下几点 var_list = who_user(); for _var_ = var_list do if _var_ is global then writetofile(human_readablefile, _var_) end end clear() 当然,这是一个伪代码,在实现它之前我有几个问题 我无法使var\u list=who\u user()工作。所以我相信这个函数不会返
var_list = who_user();
for _var_ = var_list do
if _var_ is global then
writetofile(human_readablefile, _var_)
end
end
clear()
当然,这是一个伪代码,在实现它之前我有几个问题
我能够回答您的第一个问题: 通过对who_用户功能本身的轻微修改:
function nams = who_user1()
//get user variables
[nams,mem]=who('get'); //get all variables
p=predef(); //number of system variable
st=stacksize()
nams=nams(1:$-p+1);mem=mem(1:$-p+1);
//modifiable system variables
excluded=['demolist','scicos_pal','%scicos_menu',..
'%scicos_short','%helps','%helps_modules','MSDOS','who_user','%scicos_display_mode', ...
'%scicos_help'];
ke=grep(nams,excluded)
nams(ke)=[];mem(ke)=[];
n=size(nams,1);
if n==0 then return,end
//format names on n*10 characters
ll=length(nams)+2;m=int((ll-1)/10)+1;
for k=1:max(m)
ks=find(m==k);
if ks<>[] then nams(ks)=part(nams(ks),1:(k*10));end
end
endfunction
函数nams=who_user1()
//获取用户变量
[nams,mem]=谁('get')//获取所有变量
p=predef()//系统变量数
st=堆栈大小()
nams=nams(1:$-p+1);mem=mem(1:$-p+1);
//可修改系统变量
排除=['demolist'、'scicos\u pal'、'%scicos\u菜单'、,。。
“%scicos\u short”、“%help”、“%help\u modules”、“MSDOS”、“who\u user”、“%scicos\u display\u mode”、。。。
“%scicos_help”];
ke=grep(不包括nams)
nams(ke)=[];mem(ke)=[];
n=尺寸(纳米,1);
如果n==0,则返回,结束
//按n*10个字符格式化名称
ll=长度(纳米)+2;m=int((ll-1)/10)+1;
k=1时:最大值(m)
ks=find(m=k);
如果ks[]那么nams(ks)=部分(nams(ks),1:(k*10));结束
结束
端功能
这个函数应该为您提供所需的列表(我已将名称修改为who_user1)
使用isglobal()函数可以确定特定变量是否为全局变量,但需要将变量传递给isglobal(),而不是传递变量名的字符串。上面列出的函数返回字符串向量
您可以尝试的另一种方法是重写上述函数,直接使用varargout返回变量(而不是它们的名称),然后测试它们是否为全局变量 我能够回答您的第一个问题: 通过对who_用户功能本身的轻微修改:
function nams = who_user1()
//get user variables
[nams,mem]=who('get'); //get all variables
p=predef(); //number of system variable
st=stacksize()
nams=nams(1:$-p+1);mem=mem(1:$-p+1);
//modifiable system variables
excluded=['demolist','scicos_pal','%scicos_menu',..
'%scicos_short','%helps','%helps_modules','MSDOS','who_user','%scicos_display_mode', ...
'%scicos_help'];
ke=grep(nams,excluded)
nams(ke)=[];mem(ke)=[];
n=size(nams,1);
if n==0 then return,end
//format names on n*10 characters
ll=length(nams)+2;m=int((ll-1)/10)+1;
for k=1:max(m)
ks=find(m==k);
if ks<>[] then nams(ks)=part(nams(ks),1:(k*10));end
end
endfunction
函数nams=who_user1()
//获取用户变量
[nams,mem]=谁('get')//获取所有变量
p=predef()//系统变量数
st=堆栈大小()
nams=nams(1:$-p+1);mem=mem(1:$-p+1);
//可修改系统变量
排除=['demolist'、'scicos\u pal'、'%scicos\u菜单'、,。。
“%scicos\u short”、“%help”、“%help\u modules”、“MSDOS”、“who\u user”、“%scicos\u display\u mode”、。。。
“%scicos_help”];
ke=grep(不包括nams)
nams(ke)=[];mem(ke)=[];
n=尺寸(纳米,1);
如果n==0,则返回,结束
//按n*10个字符格式化名称
ll=长度(纳米)+2;m=int((ll-1)/10)+1;
k=1时:最大值(m)
ks=find(m=k);
如果ks[]那么nams(ks)=部分(nams(ks),1:(k*10));结束
结束
端功能
这个函数应该为您提供所需的列表(我已将名称修改为who_user1)
使用isglobal()函数可以确定特定变量是否为全局变量,但需要将变量传递给isglobal(),而不是传递变量名的字符串。上面列出的函数返回字符串向量
您可以尝试的另一种方法是重写上述函数,直接使用varargout返回变量(而不是它们的名称),然后测试它们是否为全局变量 谢谢,我是不是真的在找汉克斯,我是不是真的在找汉克斯