eval(m) matlab,eval 用法 matlab

转自: https://bbs.sjtu.edu.cn/bbsanc,path,%2Fgroups%2FGROUP_4%2FMathTools%2FD547E59D4%2FD50A23A11%2FD611483FC%2FM.1328235870.A.html

help eval 将看到matlab自带的说明

eval Execute string with MATLAB expression. eval(s), where s is a string, caus

es MATLAB to execute the string as an expression or statement.

翻译一下,就是说eval函数的功能是将字符串转换为matlab可执行语句。通俗而言,比如

你输入

a='b=1';

会在workspace里看见生成了变量a,a的类型是字符串,字符串的内容是b=1

然后你输入eval(a)

就会看见变量里生成了变量b,b是一个1乘1的double型矩阵,元素的值为1

也就是说,执行eval(a)相当于执行a的内容,相当于执行b=1

如果说for语句可以将数字进行循环,那么eval结合for语句后,则大大提高其循环范围,

比如你要载入一些数据,m1.mat,m2.mat等等一直到m100.mat

普通青年可能会这样写程序

load m1.mat

load m2.mat

然后一直写100行,这显然太笨了!但普通的for语句又无法完成

于是eval函数结合for语句就体现出其价值了

for i=1:100

eval(['load ' num2str(i) '.mat'])

end

只需要三行!

除此之外,eval还广泛用于人机交互,因为matlab的gui中,get命令得到的str格式的字符

串,通常,会通过str2num将字符串转换为数字,供后续处理。而如果读入的str字符串是

cos,sin之类的指令呢?那么就需要结合eval函数,将字符串转换为指令。

有人问,我想生成100个变量,取名分别为A1~A100,怎么弄? 大部分人可能会认为无法实现,其实不然。这里以几个实例说明此类功能的实现。 针对上面提及的问题,给出一段代码,生成100个3*3随机变量,取名A1~A100:

for i=1:100

eval(['A',num2str(i),'=rand(3);'])

end

复制代码

实例2

论坛之前有童鞋问,有变量a='b',能不能将'b'变成一个变量名,将值赋给变量b。

这里就可以用eval命令解决。

a='b';

temp=200;%先将值赋给临时变量temp

eval([a,'=temp;']); %注意!这里a是不带引号的!生成变量b,将temp的值赋给b

复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
eval函数在MATLAB中是一个非常有用的函数。它可以被理解为直接在MATLAB命令行中运行括号里的MATLAB语句。通过eval函数,我们可以动态地执行字符串形式的MATLAB代码。 eval函数的基本语法是eval(expression),其中expression是一个字符串,它包含了要执行的MATLAB语句。eval函数可以返回一个或多个输出结果,输出结果可以通过赋值给变量来获取。 下面我给出一个简单的代码实例来帮助你理解eval函数的使用: ```matlab x = 5; expression = 'x^2 + 3*x - 2'; result = eval(expression); disp(result); ``` 在这个代码中,我们定义了一个变量x,并给它赋值为5。然后我们定义了一个字符串expression,它表示一个MATLAB表达式x^2 + 3*x - 2。通过eval函数,我们可以动态地计算这个表达式的值,并将结果赋给变量result。最后,我们使用disp函数打印出结果result。运行这段代码,你会得到结果28。 除了单独使用eval函数,它还可以与for循环结合使用,实现批量处理。例如,我们可以使用for循环来遍历一个数组,并通过eval函数对每个元素进行相同的操作。这样可以减少代码的冗余,并提高效率。 总结起来,eval函数在MATLAB中是一个非常有用的函数,它可以让我们动态地执行字符串形式的MATLAB代码,并返回结果。无论是在简单的计算中还是批量处理中,eval函数都能发挥重要的作用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MATLAB函数使用方法:eval](https://blog.csdn.net/qq_46027675/article/details/127267088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [matlab eval 函数的使用](https://blog.csdn.net/D_O2021/article/details/127609321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值