MATLAB的assignin和evalin函数

MATLAB工作区

   在学习assignin之前,得先了解MATLAB工作区的概念。工作区简单来说就是计算机为程序运行提供的一段内存,用于存储代码运行过程中的变量。没错,就是我们在MATLAB主界面看到的,工作区(用于保存变量)
   MATLAB的工作区包括:基本工作空间,也就是'base',以及函数工作空间,即每次调用函数时,会分配的函数工作空间。各个空间的变量是不能够直接互用。 对应'base'空间,主文件运行的变量会保留,以及函数返回值,这些变量在程序运行完后可以在主界面的工作区看到。对于函数空间会在函数调用完成后,自动释放,其中的变量也不会保留,如果需要保存某些变量到'base'工作空间,可以通过函数返回值的方法,或者通过global,或者通过assignin函数evalin函数。

   'base'工作空间可以通过主界面的工作区查看。那么函数空间怎么查看呢,当然也是通过主界面的工作区,不过,需要在对应的函数里面打断点,通过debug进入。

assignin函数

   OK,了解了工作空间的概念,那么就看看assignin函数。assignin函数为指定工作区中的变量赋值,具体用法:

assignin(ws,var,val)

   ws是指定工作空间,取值为'base'或者'caller',分别表示基本工作空间和父函数(调用者,例如:假设 funA 调用 funBfunB 的调用方工作区就是 funA。因此,可以通过使用 assignin 并将工作区指定为 'caller',从 funB 中为 funA 中的变量赋值。)工作空间,var是变量名,为一个字符串,val为一个数或者矩阵,即给var赋的值。

assignin实例

   以下例子摘自mathworks,做一个简单说明,其余例子可以参考官网,基本上大同小异。

function c = myAdd(a,b)c = a+b;str = sprintf('%s called with %d,%d (%s)',mfilename,a,b,char(datetime));assignin('base','fcnStatus',str)
end

   通过调用这个函数,可以发现在base 空间,有cfcnStatus变量,c是通过函数返回值返回的,fcnStatus是通过assignin函数在myAdd函数空间中赋值的。

evalin函数

   evalin函数在指定的工作区中计算 MATLAB 表达式,具体用法:

evalin(workspace,expression)
[output1,...,outputN] = evalin(workspace,expression)

   workspace指定在其中计算表达式的工作区,指定为 'base''caller',意义同上assignin函数。expression要计算的表达式,指定为字符向量或字符串标量,expression 必须为有效的 MATLAB 表达式,并且不能包含任何 MATLAB 关键字。

evalin函数例子

   以下例子摘自Mathwork,做一个简单说明,其余例子可以参考官网,基本上大同小异。
   例如在某个函数工作空间中,执行以下代码:

var = magic(5);
v = evalin('base','var')                 % 将var的值保存到'base'空间

   实际上上述的例子是将var当做matlab的表达式计算,然后运算完保存到'base'空间的v变量中,这实际上就是assignin的功能~~~。当然,可以向下面这样写,只要语句合法:

var = magic(5);
v = evalin('base','var+magic(5)')                 % 将var的值保存到'base'空间

evalin和eval函数对比

   evalineval函数都可以计算字符串形式的matlab表达式,唯一不同的是evalin可以指定工作区,而eval针对当前运行的工作区。例如:

Z1 = eval('magic(5)');            % 保存到当前工作空间
Z2 = evalin('base','magic(5)');   % 保存到base工作空间

MATLAB的assignin和evalin函数相关推荐

  1. assignin与evalin用法理解

    局限性 evalin 不可递归用于计算表达式.例如,形式为 evalin('caller', 'evalin(''caller'', ''x'')') 的序列无效. 提示 MATLAB 基础工作区是从 ...

  2. Matlab中画图以及plot函数及legend函数详解

    Matlab中plot函数及legend函数详解 Matlab中plot函数全功能解析Matlab中plot函数及legend函数详解 功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1, ...

  3. matlab repmate,MATLAB中“repmat”与“cat”函数的用法

    MATLAB中"repmat"与"cat"函数的用法 1. repmat函数 >> z=repmat(5,2,3) z = 5 5 5 5 5 5 ...

  4. matlab 求复数的模长,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 matlab计算带有复数的函数,最后求复数函数的模,结果里面却有复数标志i,输入自变量,得到的结果确实是实数,不知道怎么回事; 代码如下: syms n2 ...

  5. Matlab命令集--常用字符串函数

    Matlab命令集--常用字符串函数 常用函数 eval  :运行字符串表示的表达式 char  :将数组变成字符串 double:将数字字符串变成数字 字符串操作 deblank :去掉字符串末尾的 ...

  6. matlab给0数组赋值,MATLAB中怎么把一个函数的一部分赋值给一个变量或数组,比如怎么把sin(x)大于0的部分赋值给f....

    答:你可以编一个for循环么,判断sin(x)时候大于0,如果大于0 f=sin(x) 答:总体思路:设定筛选条件,将数组中符合条件的元素筛选出来(可以筛选出元素值也可以筛选出元素对应的下标),然后将 ...

  7. Matlab库中过采样函数rcosflt参数及源代码详解(翻译)

    函数定义 rcosflt函数作为MATLAB即将被替换的函数,在MATLAB R2018b中还可以使用,但是已经查不到帮助文档:虽说是要即将被替换,但是函数内部的原理其实都是一样的,这个函数搞懂了,不 ...

  8. 浅析MATLAB中的内联函数、匿名函数和函数函数

    内联函数 内联(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法.在命令窗口.程序或函数中创建局部函数时,通过使用inline构造函数,而不用将其储存为一个M文件,同时又可以像 ...

  9. 线性回归用matlab怎么做,matlab中如何应用regress()函数进行线性回归分析?

    matlab中如何应用regress()函数进行线性回归分析?回归分析是研究一个随机变量与一个或多个普通变量之间的相关系的统计方法.如果做回归分析,有很多软件都已经封装好了的,我们只需直接调用就可以了 ...

最新文章

  1. ikvm Java中异常_使用IKVMC将Java转换为.NET库 – 警告IKVMC0108:...
  2. Windows核心编程 第十一章 线程池的使用
  3. MSSQL-SQL SERVER 分页原理
  4. MFC入门(一)——MFC是一个编程框架
  5. 【渝粤题库】国家开放大学2021春4010渠道管理题目
  6. 【Flink】Flink 系统监控指标
  7. 深入理解对象的数据属性与访问器属性及属性间相互转换
  8. 旋转音乐html,css3可控旋转音乐播放按钮
  9. 【上采样问题】将浮点运算转换成整数运算
  10. Opencv中3D显示模块viz安装
  11. KAL 推出 Kalignite Hypervisor 解决方案—引领 ATM 硬件更新创新模式
  12. JpGrap引入以及中文乱码问题
  13. Set集合的基本使用
  14. 漏洞复现——shiro反序列化
  15. Java String 的最大长度
  16. 【SQL语句】灵活SQL语句
  17. Hive函数之行转列
  18. 计算机msvcp120.dll丢失的解决方法
  19. 计算机本科学年论文开题报告,计算机本科论文开题报告(计算机本科生开题报告范文)...
  20. 20200524 中南民大 2nd SCPC校赛

热门文章

  1. DISM命令使用小结
  2. 非常经典的节选:施耐庵《鲁提辖拳打镇关西》
  3. 使用CRM客户关系管理软件有哪些优势?
  4. Blos查看计算机硬盘,怎么检查硬盘是否被电脑识别 进bios判断硬盘是否运行方法...
  5. Java的JRE和JDK有什么区别和联系
  6. 注册德国商标的流程以及德国商标的异议
  7. python使用什么来表示代码块_Python入门之基本语法
  8. MapBoxSDK导入高版本unity2020、2021报错ARBackgroundRenderer
  9. 代谢组数据分析在生物医学领域的应用
  10. You-get 万能的音视频下载工具