matlab中eval的用法问题

初学matlab问个脑残问题既然eval()函数的功能就是将括号内的字符串视为语句并运行那为什么不直接运行呢加个eval有什么用?... 初学matlab 问个脑残问题 既然eval()函数的功能就是将括号内的字符串视为语句并运行
那为什么不直接运行呢 加个eval有什么用?
展开
 我来答
书香小轩
2013-04-01 · TA获得超过9780个赞
知道小有建树答主
回答量:676
采纳率:50%
帮助的人:289万
展开全部
这个我也郁闷过。
eval给MATLAB提供宏的能力。其中,该函数提供了将用户创建的函数名传给其它函数能力,以便求值。它的应用例子:
» a=eval(' sqrt(2) ')
a = 1.4142
» eval(' a=sqrt(2) ')
a = 1.4142
上面的例子演示了函数evalevalevaleval。显然,它们不是计算2的平方根的最简单方法。当被求值的字符串是由子字符串连接而成,或将字符串传给一个函数以求值时,eval非常有用。
如下程序
ct=strcat('t=0:0.01:2*pi;','y=sin(t);','plot(t,y)');
eval(ct);

楼主还不明白话,看下面,matlab群还是有很多高手的,当年我也是看的这个
eval 高级语法使用,详细讲解
详细讲解 eval用法
字符串构造
以及 帮助的翻译
\\\\\\\\\\\\\\\\\\\\\\\\\\
eval
执行字符串表达式
两步
1 构造字符串
2 执行字符串
\\\\\\\\\\\\\\\\\\\\
构造字符串技巧
num2str
可以变数字为字符串
\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\
常见的应用
1 自动保存文件
2 自动生成变量
3 内容不定问题
\\\\\\\\\\\\\\\\
细节的问题
1) 必须是字符串
2) 单引号 是 '''' 单引号字符串
3) 特殊的 不妨用 char
4) [] 就可以连接字符串
\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\字符串连接
str0= [ str1,str2]
以下的例子 并不能运行,因为是摘录代码,仅供参考,
也未删节,但加注释
\\\\\\\\\\\\\\\\
四个例子
\\\\\\\\\\\\\
ex1
n1 = 10;
% [yy,zz,xx] = meshgrid( 0:(l2-0)/(n1-1):l2 , 0:(l3-0)/(n1-1):l3,l1 / 2 );
xx = [ .2 .3 .25 .25 .2 .4 .25 .2 .2 .3];
yy = [ .2 .2 .2 .2 .1 .2 .2 .1 .3 .2];
zz = [ .15 .15 .2 .1 .2 .15 .15 .15 .15 .2];
%%
% a test
% i1 = 3
% i2 =3
% pos = [xx(i1,i2),yy(i1,i2),zz(i1,i2)]
for i1 = 1:n1
pos = [xx(i1),yy(i1),zz(i1)];
ff1 = 0:1:630;
pxw = zeros(size(ff1));
for i =1:length(ff1)
pxw(i)= cal_pxw(ff1(i),pos,model);
end
l_pxw = 20*log10(abs(pxw)/(2e-5))-30;
save_str_mat = ['save',' ','.\orgindata\p_',num2str(i1),'_spl',' ','l_pxw'];
% 构造字符串save 路径 文件名(加了数字,自动把循环代码加进去了)
% 原始字符串 save 空格 .\origindata\p_数字_spl 空格 l_pxw
eval(save_str_mat);
% 执行字符串
end
很明显看出用了eval可以少用循环语句,十分方便。
剩余请看
http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=65491
百度网友a536a36
推荐于2017-09-13 · TA获得超过4480个赞
知道小有建树答主
回答量:534
采纳率:100%
帮助的人:287万
展开全部
这个原因很简单啊。就是因为有时候需要根据前边的结果进行操作,尤其是涉及到变量名的时候。

给你出个题,你就明白了:
请产生f1,f2,f3,f4……f100,其中f1中随机放1个元素,f2中随机放2个元素,f3中随机放三个元素……

这时候使用eval就很简单了
for index=1:100
eval(['f' num2str(index) '=rand(1,' num2str(index) ');']);
end

你想想用什么命令可以直接得到这个结果呢?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式