Matlab函数怎样调用工作区变量

在一个m文件里要调用一个函数(自定义的),但是我希望这个函数能利用并修改workspace中的变量(m文件中的),可是函数的变量全是局部的,无法修改工作区的变量,我该怎么办呢?谢谢各位高手帮忙啊~

同时在“函数(自定义的)”和m文件中需要使用修改的变量申明为全局变量就可以了。就是变量前面加GLABAL
例如:
function main
global a b c d............
(注意:参数的定义在主函数内定义)
function submain
global a b c d............
不知是否满足你的需求
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-24
那就是你的函数结构没有设计好了。明知道子函数是无法改变调用它的父函数中变量的值的,就不能像你原来那样设计。父函数调用子函数时只能通过传递参数(值传递)把自己的变量传给子函数。如果传递参数这种方法满足不了要求,就应该考虑重新设计子函数和父函数的功能了
第2个回答  推荐于2017-09-03
自定义函数的途径:
M文件函数(M file function)
在线函数(Inline Function)
匿名函数(Anonymous Function)
1.M文件函数
范例
function c=myadd(a,b)
%这里可以写函数的使用说明,前面以%开头
%在工作区中,help myadd将显示此处的说明
c=a+b;
%end %非必须的
第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
调用方式:
在Matlab命令符后输入
a=1;b=2;
c=myadd(a,b)
关于m文件定义函数还有许多的说明,暂时略去。。。
2.在线函数(Inline Function)
通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
在线函数从字符串表达式创建函数,例如:
f=inline('x.^2','x');
创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
f=inline('x+y','x','y')
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。
3.匿名函数(Anonymous Function)
匿名函数使用函数句柄来表示匿名函数,定义形式为
函数句柄=@(变量名) 函数表达式
例如:
f=@(x) x.^2
定义了函数f(x)=x^2,f(2)计算在x=2处的值。
匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
a=2;
f=@(x) x.^2+a
f(2) %计算时引用了变量a
a=0;
f(2) %仍然引用的是a=2
匿名函数也可以由Matlab的内置函数或M文件函数创建,例如
f=@sin %f(x)=sin(x)
f(pi/2) %sin(pi/2)
functions(f) %查看函数信息
利用单元数组可以创建多个函数的句柄,例如
f={@sin @cos}
f{1}(pi/2) %计算sin(pi/2)
f{2}(pi) %计算cos(pi)
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
Matlab 7以后,建议以匿名函数取代在线函数!!!
在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。

Matlab函数怎样调用工作区变量?
就是变量前面加GLABAL\\x0d\\x0a例如:\\x0d\\x0afunction main\\x0d\\x0aglobal a b c d...\\x0d\\x0a(注意:参数的定义在主函数内定义)\\x0d\\x0afunction submain\\x0d\\x0aglobal a b c d...\\x0d\\x0a不知是否满足你的需求 ...

Matlab变量作用域——你了解了吗?
在函数中,无法直接访问工作区作用域中的变量。可以使用`evalin`函数来读取工作区变量。`evalin`函数的第一个参数用于指定变量的作用域,通常为`'ws'`(工作区)或`'caller'`(调用者函数)。第二个参数则是变量名。通过`evalin`函数,可以从工作区中获取所需的变量。为了将函数作用域中的变量存储到...

请问matlab工作区不显示变量,是什么原因?
为了解决这一问题,您可以采取两种方法。首先,您可以使用disp命令将变量显示在工作区。只需在命令行中输入disp(变量名),MATLAB就会输出该变量的当前值,方便您查看。其次,您还可以在GUI中利用静态文本控件来展示变量的值。这样做的好处是,无论在MATLAB的脚本运行过程中,还是用户与GUI交互时,都能实时...

Matlab程序报错20:Matlab定义的function使用工作区变量a时为什么报错...
先说最基本的情况,定义函数y=fun(x),需要计算函数表达式y=x²+x+3,这个简单,在命令行窗口直接调用即可:y=fun(1),结果:y=5;进一步,如果基础工作区有变量a=2,而定义的函数y=fun(x)中,需要计算函数表达式y=a*x²+x+3,大家注意,函数表达式有一个变量a,但是,函数工作区...

使用Matlab批量创建、搜索变量,并通过工作区变量赋值
核心目标是针对360个MAT文件中的变量,通过for循环实现变量创建、搜索、截取和赋值。尽管网络资源有限,且找到的解决方案不尽如人意,但通过深入研究,我找到了一系列基本的Matlab函数来实现这个功能。下面展示实际的代码实现,所有数据都来自MAT文件,由于涉及实验数据,我并未提供具体数据。代码结构清晰,主要...

matlab如何通过脚本获取工作区变量值
命令行窗口输入变量名即可

matlab仿真后的图形,只能再scope里显示,要怎么才能完整地显示在工作区...
要看情况,双击示波器里的“Parameters”,在Data history里,选Save data to workplace,在“Variable name”设置一个变量名如“t”,Format设置Array。设置完后,在运行一次。然后在matlab命令窗口输入plot(t(:,1),t(:,2))。当然这只是针对一条曲线,若示波器里有多条,同样在matlab命令窗口输入plot...

工作区变量matlab
...)save('filename', '-struct', 's')save('filename', '-struct', 's', 'f1', 'f2', ...)save('-regexp', expr1, expr2, ...)save('..., 'format')save filename var1 var2 ...这些是save的用法,对比一下,很明显,楼主语法错了!详细说明,在工作区输入doc save ...

matlab如何用脚本获取工作区变量名字
使用who命令即可 如果要保存各变量名字 例如varnames=who

.mat文件中的数据怎么调用
该命令可以保存工作区,或工作区中任何指定文件。该命令的调用格式如下:● save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为 matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。● save('filename'):将工作区中的所有变量...

相似回答