matlab中eval用法

eval的功能简单来说就是可以把字符串当做命令来执行,

之前没用到的时候对这句话不太懂,百度了一下,看到有人举的例子:

eval('y=sin(1)')与命令 y=sin(1)等价

emmm看完后虽然懂了基本用法还是一脸懵逼,道理我都懂,但是  这不是自讨无趣吗,直接打命令不是更简单吗?

最近需要把数据按天按时段导出excel我才仔仔细细地研究了一下eval函数的具体用法,真的好用!也指出了遇到的坑,帮助后面像我一样的小白:

eval用于循环中是再好不过了,特别是有些变量的名字中含有有规律的数字,比如我们现在要依次把data1,data2,data3写入excel,并命名为data1.xlsx,data2.xlsx,data3.xlsx,

当然你可以写三行:

xlswrirte('data1.xlsx',data1)

xlswrirte('data2.xlsx',data2)

xlswrirte('data3.xlsx',data3)

但是假如现在有1000个这种data1,data2,...,data1000呢

这个时候就需要eval出马了,我们也可以只用三行:

for i=1:1000

eval(['xlswrite(''data',num2str(i),'.xlsx'',','data',num2str(i),')'])

end

%注意上面的eval语句语句中第一个data前面有两个'',而xlsx后面也有两个'',这就是给我们初学者埋下的坑哈哈,两个''号中第一个'代表转义字符,意思是两个''号中第二个'号为命令中的'号,不是用来分割字符串文本的!

%使用eval时只需要先把想要表示的语句即命令写好,再用'号分割成一段段字符串,注意上面提到的'可以用作转义字符的情况

最后放一个我用来分表写入excel的实例吧,看起来复杂一点但是道理都是一模一样的:

这个是把2880个变量(15min一个,一天96个,30天2880个,按时间顺序已排好序)每96个变量一个excel,每个变量一个sheet:

 

clear
clc
close all
load time_volume_data.mat%载入数据
%把站点流量按天按时段写入excel文件
m=1;
day=1;
for n=1:2880
    eval(['xlswrite(''data',num2str(day),'.xlsx''',',','data',num2str(n),',','''sheet',num2str(m),''')']);
    if m==96
        m=0;
    end
    if mod(n,96)==0
        day=day+1;
    end
    m=m+1;
end
以上,希望大家eval用的愉快!
————————————————
版权声明:本文为CSDN博主「fff_zrx」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38412868/article/details/79185883

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值