声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1095|回复: 4

[编程技巧] 急!这语句是怎么执行的

[复制链接]
发表于 2006-10-19 09:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
eval(['x=b2f(pop(1,:),bounds,bits);[x v]=' evalFN ...
        '(x,[0 evalOps]); pop(1,:)=[f2b(x,bounds,bits) v];']);  

运行后出错
??? Error using ==> horzcat
Conversion to cell from double is not possible.

想弄清楚程序执行方式后查找!先谢谢那位朋友的帮忙。
回复
分享到:

使用道具 举报

发表于 2006-10-19 12:32 | 显示全部楼层
eval语句是执行字符串代码的一种形式,即运行字符串里的 matlab的命令

上面一句等价于

x=b2f(pop(1,:),bounds,bits);
[x v]=' evalFN '(x,[0 evalOps]);
pop(1,:)=[f2b(x,bounds,bits) v];  

注意到中间的语句 'evalFN',这里是一个字符串,evalFN这个函数是前面定义过的,如果直接按上面的三句来执行,那么 'evalFN' 你就要用明确的函数来代替了。而在evalFN存在多个选择的时候,你每重新选定一个evalFN的时候,如果不采用eval的形式,那么程序中evalFN就要进行修改了,而采用eval形势,只要修改前面的'evalFN='这个语句就可以了。.

由于字符串形成有一定的方便性,所以用来写一些通用性的命令来优化程序结构,方便编程,也方便了代码的通用性。

我现在经常用eval函数实现的操作有:批量保存图形,批量保存变量到文件,改变某个参数批量运行某个程序并保留结果,太方便了。

[ 本帖最后由 心灯 于 2006-10-19 12:35 编辑 ]
 楼主| 发表于 2006-10-19 14:13 | 显示全部楼层
谢谢心灯罗,加一句,你的头像好威猛!呵呵
发表于 2006-10-19 15:44 | 显示全部楼层
长知识了
发表于 2006-10-19 19:36 | 显示全部楼层
原帖由 realhappy 于 2006-10-19 14:13 发表
谢谢心灯罗,加一句,你的头像好威猛!呵呵


不用客气,呵呵

我的ID是色厉内荏型的,现实生活中貌似色也不厉? :@$
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-25 03:22 , Processed in 0.076941 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表