matlab eval函数的使用

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函数,将字符串转换为指令

例一:

for x=1:5

eval(['y',num2str(x),'=',num2str(x^2),';'])

end

以上语句等价于执行以下5句:

ynum2str(1)=num2str(1^2);

ynum2str(2)=num2str(2^2);

ynum2str(3)=num2str(3^2);

ynum2str(4)=num2str(4^2);

ynum2str(5)=num2str(5^2);

例二:

subplot(711);plot(t,y);title('原始信号’);

for i=1:6
subplot(7,1,i+1);
plot(t,imf(i,:));
eval(['title(''IMF',int2str(i),''');']);
end

-------------------------

以上6行程序实际上是执行以下7条命令

subplot(711);plot(t,y);title('原始信号');

subplot(7,1,2);plot(t,imf(1,:));title('IMF1');
subplot(7,1,3);plot(t,imf(2,:));title('IMF2');
subplot(7,1,4);plot(t,imf(3,:));title('IMF3');
subplot(7,1,5);plot(t,imf(4,:));title('IMF4');
subplot(7,1,6);plot(t,imf(5,:));title('IMF5');
subplot(7,1,7);plot(t,imf(6,:));title('IMF6');

其中最后6条是通过循环里面执行的语句

这里主要是通过eval()函数实现了输出title('IMFi');这个语句

1.把 title('IMF 看做一个字符串

2.把i (i=1,2,3,4,5,6)这个浮点型变量以字符的形式输出

3.把 '); 看做一个字符串

以上三部分整合起来就是 输出命令  title('IMFi');

其中值得注意的是想要输出单撇号,用''代替'即可,就好像C语言用\\代替\是一个道理,都属于特殊符号。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值