matlab eval函数用法

eval(‘expression’):执行文本中的表达式
例如eval(‘y=1’),执行的为y=1,这一表达式,就是把y赋值为1。
之前看到在eval里用到int2str,或num2str这样的函数,例如

for n=1:10
	eval(['A',int2str(n),'=rand(10)']);
end

执行的就是建立了十个随机10x10的矩阵A1到A10,即An=rand(10),因为rand(10)后面没有加分号,所以每次循环都会把结果显示在命令行。

eval经常会用在带序列名称的变量和带序列名称的文件中。帮助文件中可以看到并不推荐使用eval这一函数,而应该用其他方法代替。

例如
1.带序列名称的变量
建立元胞数组

A = cell(10,1);
for n = 1:10
    A{n} = rand(10);
end

也是建立十个10x10的随机矩阵,通过花括号A{n}可以查询每个矩阵的具体数值。

2.带序列名称的文件
利用eval将数据写入excel

clear all;clc
A = cell(10,1);
for n = 1:10
    A{n} = rand(10);
    eval(['xlswrite(''myfile',int2str(n),'.xlsx'',A{n})'])
end

上面程序将生产的10个10x10随机矩阵分别写入myfile1,,,myfile10这十个xlsx文件中。

利用sprintf可以代替上述代码

clear all;clc
num=10;
for n=1:num
    randomdata=rand(10);
    currentfile=sprintf('myfile%d.xlsx',n);
    xlswrite(currentfile,randomdata)
end

来源
https://ww2.mathworks.cn/help/matlab/matlab_prog/string-evaluation.html?searchHighlight=eval&s_tid=doc_srchtitle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值