主要内容

赋予

在指定的工作区中为变量分配值

描述

例子

Assivein(WS.var.分配价值到变量var.在工作区WS.。例如,Displayin('base','x',42)将值42分配给变量X在matlab.®基础工作区。

如果需要评估,Matlab在调用的函数中评估它赋予,不是在指定的工作空间中WS.。如果是一个函数句柄,它必须在调用的函数中进行评估赋予

赋予功能对这些任务很有用:

  • 将数据从函数导出到基础工作区。

  • 从函数内,更改在调用者函数的工作区中定义的变量的值。例如,您可以在调用函数参数列表中更改变量的值。

例子

全部收缩

在当前工作文件夹中的文件中,创建一个添加两个数字的函数,然后为变量分配值fcnstatus.在基础工作区。

功能C = MyAdd(A,B)C = A + B;str = sprintf('%s称为%d,%d(%s)',mfilename,a,b,char(datetime));Assivein('根据''fcnstatus',str)结尾

在命令提示符下,调用函数。

n = myadd(2,3)
n = 5.

查看值的值fcnstatus.变量迈达德函数分配在基础工作区中。

fcnstatus.
fcnstatus ='Myadd调用2,3(2017年11月14日14:56:14)'

在当前工作文件夹中的文件中,创建一个函数,显示一个对话框,以输入姓名和诞生年份并计算2050年的年龄。该赋予函数将值导出到MATLAB工作区变量名称年龄2015.

功能mydialog提示= {'输入名字:''进入诞生年份:'};答案= inputdlg(提示);n =答案{1};生育师= str2double(答案{2});a = 2050生菜;Assivein('根据''名称',n);Assivein('根据''年龄2015年',一种);结尾

在命令提示符下,运行函数,输入数据,然后单击“确定”。

MyDialog.

查看Workspace浏览器中的导出值。

创建一个将输入年龄的函数更改为42.呼叫赋予localfcn.改变价值一种在主要功能的工作空间中,更新

功能更新(a)validattributes(a,{'数字'},{'scalar'})fprintf('\ tyour年龄:%d \ n',a)localfcn fprintf('\ tyour更新年龄:%d \ n',一种)结尾功能localfcn Assistin('呼叫者''一种',42)结尾

在命令提示符下,调用主函数。

更新(37)
您的年龄:37您的更新年龄:42

虽然此示例描述了如何将变量分配到调用者工作区中,但最佳实践是具有本地功能localfcn.将更新的年龄作为输出参数返回。

在当前工作文件夹中的文件中,创建一个查找随机数组的最小值的函数。这ascysfh.本地功能为函数句柄分配FH.进入工作区丁当兰。这丁当兰功能评估FH.与输入有关N

功能m = minrand(n)分配= fh(n)m = min(a(:));结尾功能Assegnfh fh = @(dim)rand(dim);Assivein('呼叫者''fh',fh)结尾

用输入值调用函数2。

m = minrand(2)
A = 0.3486 0.1423 0.0419 0.0766 m = 0.0419

函数处理评估到2×2阵列的随机数。

创建另一个函数版本,调用MINRAND2.,其中本地功能覆盖兰特功能在函数句柄定义中。

类似于丁当兰例如,这Assemsfh2.本地功能分配FH.进入工作区MINRAND2.。这Assemsfh2.功能覆盖了兰特在其工作空间中的函数,变量命名兰特并创建功能句柄。此行为与匿名函数一致 - 使用创建时可用的变量创建函数句柄。因此,函数处理评估MINRAND2.结果是N索引到兰特阵列定义Assemsfh2.

功能m = minrand2(n)分配FH2(n)a = fh(n)m = min(a(:));结尾功能Assegsfh2(n)rand = 13 * inton(n);fh = @(dim)rand(dim);Assivein('呼叫者''fh',fh)结尾

用输入值调用函数2。

m = minrand2(2)
a = 13 m = 13

为调用者工作区分配匿名函数时,Matlab将函数句柄的定义放在调用者工作区中的变量中。呼叫的功能赋予评估功能句柄。虽然此示例描述了如何将变量分配到调用者工作区中,但最佳实践是具有本地功能ascysfh.将函数句柄返回为输出参数。

输入参数

全部收缩

工作区,指定为'根据'或者'呼叫者'

在MATLAB基础工作区中指定值,使用'根据'。基础工作空间存储在MATLAB命令提示符下创建的变量,包括脚本创建的任何变量,假设您从命令行或编辑器运行脚本。

在调用者函数的工作空间中分配变量,使用'呼叫者'。调用者工作区是函数的工作空间,称为当前运行的函数。例如,假设呼叫fun。来电者工作区fun。因此,从fun,您可以将值分配给变量使用赋予并指定工作区'呼叫者'

笔记

分配给呼叫者工作区中的变量可以使代码更难以理解,向用户提供令人惊讶的结果(其工作区中的意外或重新定义的变量),并具有负面的性能影响。最佳实践是使函数将变量返回为输出参数。

基础和来电者工作区在以下情况下等效:

  • 您在命令提示符和主函数调用时调用函数赋予

  • 你打电话赋予在命令提示符下。

数据类型:char|细绳

变量名称,指定为字符向量或字符串标量。如果var.在指定的工作区中不存在,赋予函数创建它。

数据类型:char|细绳

变量的值,指定为标量或数组值。可以有任何数据类型,并且可以包括matlab表达式。

如果变量的值需要评估,Matlab评估包含呼叫的函数中的表达式赋予,不是在指定的工作空间中WS.。如果是一个函数句柄,它必须在调用的函数中进行评估赋予

例子:5.

例子:'你好'

例子:兰特(3,7)

例子:@cos.

尖端

  • 赋予函数不会为数组的特定元素分配值。所以var.不能包含数组索引。此代码会导致错误。

    x = 1:8;Displayin('base','x(3:5)', -  1);

    要为数组的特定元素分配值,请使用评价功能。

    评价('Base','x(3:5)= -1')

也可以看看

在R2006A之前介绍