evalin matlab,【转】Matlab里evalin和assignin的用法

本文介绍了MATLAB中工作空间的特性,特别是函数内部与基本工作空间的隔离。详细讲解了`assignin`和`evalin`两个函数的用法,用于在不同工作空间间操作变量。通过示例展示了如何使用这两个函数来分配变量值和执行表达式,强调了`evalin`的强大功能,如在函数运行时执行工作空间内的命令。
摘要由CSDN通过智能技术生成

assignin与evalin

MATLAB在程序运行过程中,将为每个函数分配它自己的(从基本空间中分割出的一块),各个工作空间之间的变量是不能够直接引用的,在函数退出之后,该函数空间也就立即被注销。因此,对于函数文件,运行结果除输出变量返回到基本工作空间或者其父工作空间(调用该函数的程序的工作空间)之外,其他中间变量不在基本工作空间或者其父工作空间保留,而其运算过程中所用到的中间变量也将在基本工作空间'base'中保留。

assignin为工作空间的变量指派值,其语法为:

assignin(WS,'name',V)

其中,WS为工作空间名称,'name'为变量名,V是为该变量指派的值。

evalin实现在工作空间中某个表达式字符串,并将结果返回,其语法为:

evalin(WS,'expression'),其中,WS为工作空间名称,'expression'为表达式符号串。

利用assignin与evalin指令,可以。

例:

function test

clear; %清空当前工作空间

a=3; % 在基本工作空间创建一个变量

assignin('base','a',5); % 为该变量指派新的值

b = evalin('base','3*a+2'); %在基本工作空间中计算式子3*a+2的值并将结果赋予b

end

a % 查看现在该变量的值

a = 5

b

b = 17

evalin功能很强大,可以运行不同工作区域里的Matlab任何命令:

evalin(ws, expression)

[a1, a2, a3, ...] = evalin(ws, expression)

ws:工作区域(default是base)

expression: 合法的matlab命令

比如想在运行函数同时,运行工作区域里一个赋值命令:

evalin('base', 'a=1');

看一下,是不是你的workspace里面有了一个a的变量。

原创毕业设计完工贴出来和大家分享一下吧-metro_simulation.rar 我的毕业设计是做一个地铁列车运行过程的仿真系统。当然,不是很复杂。在simulink面建立模型,然后用GUI对其中变量进行赋值,并通过GUI中的一段函数对制动点进行试凑,最后显示出列车的速度-路程曲线,行驶总路程和时间。 ------------------------------------------- 现将GUI中所调用的功能及其实现方法整理如下: 1、点击按钮,切换GUI。这个现实起来很简单,只要在按扭的callback函数写上run; close;即可。 2、把GUI中edit框中的数值赋给simulink中对应的变量。这个问题一开始困扰了我好一段时间,看了很多例子都不行,有人说用set_param,但我用了之后总是会报错说变量没有定义。其实,只需要用等号对变量名进行赋值即可。例如:simulink中某个变量为M,edit框的确Tag为name,那么相应的代码就是M=str2double);这的str2double是将字符串变为double型的双精度数。调用simulink前写上options = simset;再进行调用sim; 3、从excel中读取数据,并将其赋给对应的edit框。这个在math大哥的视频已经有详细解析了,这就不缀述了。 4、将GUI中的参数保存进excel文件中,这个与读取过程类似,不过用的函数是uiputfile和xlswrite,具体的到matlab帮助看一下就可以了,面写得非常清楚。 5、将最后的仿真结果绘制出来。这个实现起来相对比较麻烦。首先在simulink要添加"to workspace"模块(注意save format一定要选择Array)。然后在调用simulink仿真的语句后面,用assignin函数将"to workspace"输出的数据保存在workspace中的向量中,例如assignin; result是输出的结果,k1是保存的向量名。在调用k1进行画图的时候,需要用evalin函数将k1从工作空间中读取出来,如k2=evalin。 如果输出的结果是最终的一个数,而非一个数组,则可以用result来获取,这的t是仿真时间长度,step为仿真步长。 ---------------------- 我用到的GUI主要部分就是这些,希望能对大家有些帮助。GUI入手的确比较困难,但只要多看几个例子,问题就会迎仞而解。ilovematlab论坛的确给我们提供了一个良好的平台,从这学到了很多有用的东西。 ---------------------------------- ---------------------------------- 附件中是我的源程序,运行时先从preface开始。 1.jpg 2.jpg 3.jpg 4.jpg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值