主要内容

assignin

将值分配给变量指定的工作区

描述

例子

assignin (ws,var,瓦尔)指定的值瓦尔对该变量var在工作区中ws。例如,assignin('基地',' x ', 42)向变量分配值42x在MATLAB®基本工作空间。

如果瓦尔需要评估,MATLAB计算的函数调用assignin,而不是在指定的工作区ws。如果瓦尔是一个函数处理,必须在函数调用可评价的assignin

assignin函数是非常有用的为这些任务:

  • 导出数据从一个函数基工作区。

  • 在一个函数,改变一个变量的值,调用者的工作空间中定义的函数。例如,你可以改变一个变量的值调用函数的参数列表。

例子

全部折叠

在一个文件在你当前的工作目录中,创建一个函数,添加了两个数字,然后将值赋给一个变量fcnStatus在基本工作空间。

函数c = myAdd (a, b) c = a + b;str = sprintf (以% d % %年代称为d (% s) 'mfilename, a, b, char (datetime));assignin (“基地”,“fcnStatus”str)结束

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

n = myAdd (2、3)
n = 5

视图的价值fcnStatus变量,myAdd函数分配的基本工作空间。

fcnStatus
fcnStatus = ' myAdd称为与2、3(17 - 11月- 2017 14:56:14)”

在文件在你当前的工作目录中,创建一个函数显示一个对话框,输入一个名称和一个出生年和计算年龄在2050年。的assignin函数出口MATLAB工作空间变量的值的名字age2050

函数mydialog提示= {输入的名字:“,“输入出生年:”};回答= inputdlg(提示);n =回答{1};回答birthyear = str2double ({2});一个= 2050 - birthyear;assignin (“基地”,“名字”n);assignin (“基地”,“age2050”,);结束

在命令提示符处运行这个函数,输入数据,并单击OK。

mydialog

对话框的屏幕截图。

在工作空间浏览器视图中导出的值。

创建一个函数改变一个输入年龄42岁。调用assigninlocalfcn变化的价值一个在工作区中主要的功能,updateAge

函数updateAge (a) validateattributes (a, {“数字”},{“标量”})流(“\ tYour年龄:% d \ n”一)localfcn流(“\ tYour更新年龄:% d \ n ',)结束函数localfcn assignin (“来电”,“一个”,42岁)结束

在命令提示符处,叫主函数。

updateAge (37)
你的年龄:37你更新年龄:42

虽然这个例子描述了如何分配一个变量到调用者的工作区中,最佳实践是本地函数localfcn返回更新后的年龄作为一个输出参数。

在一个文件在你当前的工作目录中,创建一个函数,发现随机数组的最小值。的assignfh本地函数分配函数处理跳频的工作空间minRand。的minRand功能评估跳频与输入n

函数m = minRand (n) assignfh =跳频(n) m = min ((:));结束函数assignfh fh = @(暗)兰德(暗);assignin (“来电”,“跳频”跳频)结束

调用该函数的输入值2。

m = minRand (2)
一个= 0.3486 0.1423 0.0419 0.0766 m = 0.0419

函数处理评估一系列2×2的随机数字。

创建另一个版本的函数,调用minRand2,当地的功能覆盖了兰德函数在函数处理的定义。

类似于minRand的例子中,assignfh2本地函数分配跳频的工作空间minRand2。的assignfh2功能覆盖了兰德函数在其工作空间变量命名兰德并创建函数处理。这种行为是一致的匿名函数,函数句柄使用变量可以在创建时创建它。因此,处理评价函数minRand2结果n索引的兰德数组中定义assignfh2

函数m = minRand2 (n) assignfh2 (n) =跳频(n) m = min ((:));结束函数assignfh2兰德= 13 * (n)的(n);跳频= @(暗)兰德(暗);assignin (“来电”,“跳频”跳频)结束

调用该函数的输入值2。

m = minRand2 (2)
一个= 13 m = 13

当分配一个匿名函数调用者工作区,MATLAB的定义了函数调用者的工作区中处理在一个变量中。函数调用assignin评估函数处理。虽然这个例子描述了如何分配一个变量到调用者的工作区中,最佳实践是本地函数assignfh返回函数处理作为输出参数。

输入参数

全部折叠

工作空间,指定为“基地”“来电”

在MATLAB基础工作空间赋值,使用“基地”。基工作区存储创建的变量在MATLAB命令提示符,包括任何脚本创建的变量,假设您从命令行运行脚本或编辑。

分配变量在调用者的工作空间函数,使用“来电”。函数的调用者工作区工作区,当前运行的函数。例如,假设funA调用funB。调用者的工作空间funBfunA。因此,从funB,可以赋值给一个变量funA使用assignin并指定工作区“来电”

请注意

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

基地和调用者工作区在下列情况下是等价的:

  • 你调用一个函数在命令提示符和主函数调用assignin

  • 你叫assignin在命令提示符。

数据类型:字符|字符串

变量名称,指定为一个特征向量或字符串标量。如果var中不存在指定的工作区,assignin函数创建它。

数据类型:字符|字符串

指定的变量值作为一个标量或数组值。瓦尔可以有任何数据类型,包括MATLAB表达式。

如果变量的值需要评估,MATLAB计算包含调用函数的表达式assignin,而不是在指定的工作区ws。如果瓦尔是一个函数处理,必须在函数调用可评价的assignin

例子:5

例子:“你好”

例子:兰德(7)

例子:@cos

提示

  • assignin不赋值函数特定元素的数组。因此var不能包含数组索引。这段代码会导致错误。

    X = 1:8;assignin(“基地”、“X (3:5) ', 1);

    将值分配给特定元素的数组,使用evalin函数。

    evalin(“基地”,“X (3:5) = 1”)

版本历史

之前介绍过的R2006a

另请参阅