matlab中的eval函数使用

matlab中的eval函数使用

在matlab的命令行窗口中输入help eval命令回车就能够看到eval函数的官方解释,大概的意思就是执行matlab中的表达式,计算expression表示的代码。意思是至关于在命令行中输入expression表达式命令的意思。
用法:express

eval(expression)
[output1,…,outputN] = eval(expression)

这里就很奇怪了,为啥不直接在命令行中输入命令而是要多使用一个eval函数来完成这样的事情呢。这个是有缘由的,下面举个例子:
一、好比你须要使用matlab加载一些数据,而且这些数据保存在不少个文件中,文件的命名有必定的规律,好比:data1.mat data2.mat......等,你须要怎样来加载呢?是直接写n个load data1.mat吗,显然不是的,当遇到这种状况的时候就是eval函数展现其用处的时候了。你能够这样写:函数

for i = 1:n
    eval(['load',' ','data',num2str(i),'.mat']);  % 这样彻底跟上面的功能同样
end

二、当你须要在一串字符串中提取出数字,或者将一串十进制的数中将每一个数都提取出来时,每一个数字之间使用空格分开,即a = '12 34 45 67',这样的形式你怎样将他们提取出来变成一个矩阵呢?这个一样可使用eval函数来解决这个问题:命令行

for i = 1:4
    num(i) = eval(['hex2dec(','a(3*i-2:3*i-1)',')']);  % 使用这个语句就能够实现将上面的字符串中的数字转换为相应的矩阵了
 end

注意有坑:

一、eval函数至关于在命令行中输入命令,因此命令的形式必需要跟expression的形式要一致,不然回出错,这个就是上面代码1中为何须要使用:eval(['load',' ','data',num2str(i),'.mat']);在expression中间还添加了' ',这个就是须要保持expression正确。
二、eval因为会直接将命令输出,因此它能够自动识别有实际数值的变量,这个就是上面代码2中直接输入i的表达式的缘由:eval(['hex2dec(','a(3i-2:3i-1)',')']);
三、若是在eval表达式中存在符号'时,须要使用转义字符即须要在'的地方添加两个''才能够,这样表示他就是一个'而不是表示字符串的意思。code

相关文章
相关标签/搜索