读取Excel内的多工作簿,这里不在啰嗦,使用xlsfinfo配合xlsread即可。
但是如果一个excel文件内工作簿的数量太多,就需要借助eval了。
eval是一个函数,可以把括号里的字符串解释成命令直接运行。在循环中我们没有办法直接修改变量名字,但使用eval可以达到目的。
举例:
复制代码
1
2
3
4
5
6
7
8
9[~,sheets]=xlsfinfo('file.xlsx'); % get sheet names in excel file sheetsName=string(sheets); % cell to string excelName='file.xlsx'; for i=1:length(sheetsName) a=['sheet',num2str(i)]; eval([a,'=xlsread(''',excelName,''',','''',char(sheetsName(i)),'''',');']); end
运行即可发现每一个sheet都按照顺序赋给了sheet1,sheet2…中了。
注意
eval中的参数必须是字符串。
- 三个引号:连续的两个引号中,第一个引号表示转义,说明第二引号就是引号,而不是字符的结束。第三个引号才是说明是字符的结束。
- char(sheetsName(i))是在字符串拼接时把string类型变成char型,具体原因可以看这里。
- 一定要好好检查eval内的字符串是否正确,可以先把命令写出来,在一点点添加引号和逗号,测试无误后再放到程序中运行。
最后
eval其实是一个运行速度很慢的操作,所以matlab官方提供了在一些情景下来替代eval的方法。详情可以看这里。
最后
以上就是兴奋航空最近收集整理的关于matlab之eval的妙用:批量生成、修改变量名(一次性读取Excel内多个工作簿)的全部内容,更多相关matlab之eval内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复