作业帮 > 综合 > 作业

Matlab 编写自增函数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 08:28:38
Matlab 编写自增函数
求教,怎么编写这样一个函数?
比如说我要编写一个inc,可以使自变量自加1
%调用
test=5;
inc(test);
test
test=[1,2;2,1];
inc(test)
test
输出:6
输出:[2 3
3 2]
那个,我不希望test=inc(test)这样调用……说实话就是函数值要返回一个布尔值或者什么都不返回,他的用途就是使一个已经定义的数+1
写一个m文件
function inc(var)
var_name=inputname(1);
assignin('base',var_name,evalin('base',var_name)+1);
end
在工作空间里:
test=5;
inc(test);
test
test =
6
test=[1,2;2,1];
inc(test)
test
test =
2 3
3 2
再问: 哦哦,就是这一种……果然高人…… 话说可以解释一下 var_name=inputname(1); assignin('base', var_name,evalin('base', var_name)+1); 这两行代码的意思么 顺便这个程序可以在其他m文件调用么
再答: 如果使其它m文件也可以调用,m文件inc.m要改写成这样的('base'改成'caller'): function inc(var) var_name=inputname(1); assignin('caller' , var_name,evalin('caller', var_name)+1); end var_name=inputname(1)为获取函数第一个参数的变量名称;evalin(ws, expression) 执行一个表达式;assignin(ws, 'var',val) 将值val赋给变量'var';ws可以是'base' 或 'caller' 分别为 MATLAB 工作空间和调用函数空间(即变量所在的空间)。