MATLAB的assignin和evalin函数
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
调用 funB
。funB
的调用方工作区就是 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
空间,有c
和fcnStatus
变量,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函数对比
evalin
和eval
函数都可以计算字符串形式的matlab
表达式,唯一不同的是evalin
可以指定工作区,而eval
针对当前运行的工作区。例如:
Z1 = eval('magic(5)'); % 保存到当前工作空间
Z2 = evalin('base','magic(5)'); % 保存到base工作空间
MATLAB的assignin和evalin函数相关推荐
- assignin与evalin用法理解
局限性 evalin 不可递归用于计算表达式.例如,形式为 evalin('caller', 'evalin(''caller'', ''x'')') 的序列无效. 提示 MATLAB 基础工作区是从 ...
- Matlab中画图以及plot函数及legend函数详解
Matlab中plot函数及legend函数详解 Matlab中plot函数全功能解析Matlab中plot函数及legend函数详解 功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1, ...
- matlab repmate,MATLAB中“repmat”与“cat”函数的用法
MATLAB中"repmat"与"cat"函数的用法 1. repmat函数 >> z=repmat(5,2,3) z = 5 5 5 5 5 5 ...
- matlab 求复数的模长,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 matlab计算带有复数的函数,最后求复数函数的模,结果里面却有复数标志i,输入自变量,得到的结果确实是实数,不知道怎么回事; 代码如下: syms n2 ...
- Matlab命令集--常用字符串函数
Matlab命令集--常用字符串函数 常用函数 eval :运行字符串表示的表达式 char :将数组变成字符串 double:将数字字符串变成数字 字符串操作 deblank :去掉字符串末尾的 ...
- matlab给0数组赋值,MATLAB中怎么把一个函数的一部分赋值给一个变量或数组,比如怎么把sin(x)大于0的部分赋值给f....
答:你可以编一个for循环么,判断sin(x)时候大于0,如果大于0 f=sin(x) 答:总体思路:设定筛选条件,将数组中符合条件的元素筛选出来(可以筛选出元素值也可以筛选出元素对应的下标),然后将 ...
- Matlab库中过采样函数rcosflt参数及源代码详解(翻译)
函数定义 rcosflt函数作为MATLAB即将被替换的函数,在MATLAB R2018b中还可以使用,但是已经查不到帮助文档:虽说是要即将被替换,但是函数内部的原理其实都是一样的,这个函数搞懂了,不 ...
- 浅析MATLAB中的内联函数、匿名函数和函数函数
内联函数 内联(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法.在命令窗口.程序或函数中创建局部函数时,通过使用inline构造函数,而不用将其储存为一个M文件,同时又可以像 ...
- 线性回归用matlab怎么做,matlab中如何应用regress()函数进行线性回归分析?
matlab中如何应用regress()函数进行线性回归分析?回归分析是研究一个随机变量与一个或多个普通变量之间的相关系的统计方法.如果做回归分析,有很多软件都已经封装好了的,我们只需直接调用就可以了 ...
最新文章
- ikvm Java中异常_使用IKVMC将Java转换为.NET库 – 警告IKVMC0108:...
- Windows核心编程 第十一章 线程池的使用
- MSSQL-SQL SERVER 分页原理
- MFC入门(一)——MFC是一个编程框架
- 【渝粤题库】国家开放大学2021春4010渠道管理题目
- 【Flink】Flink 系统监控指标
- 深入理解对象的数据属性与访问器属性及属性间相互转换
- 旋转音乐html,css3可控旋转音乐播放按钮
- 【上采样问题】将浮点运算转换成整数运算
- Opencv中3D显示模块viz安装
- KAL 推出 Kalignite Hypervisor 解决方案—引领 ATM 硬件更新创新模式
- JpGrap引入以及中文乱码问题
- Set集合的基本使用
- 漏洞复现——shiro反序列化
- Java String 的最大长度
- 【SQL语句】灵活SQL语句
- Hive函数之行转列
- 计算机msvcp120.dll丢失的解决方法
- 计算机本科学年论文开题报告,计算机本科论文开题报告(计算机本科生开题报告范文)...
- 20200524 中南民大 2nd SCPC校赛