这个函数非常有用,它的存在让万物皆可循环成为了现实,与之相应的,掌握(书写)这个函数的难度也相对较高。
简单级别:
1、 y1 = sin(2);
-> eval('y1=sin(2)')
普通(for循环部分省略)下述代码由于时间问题暂未进行测试
2、 y1 = sin(x),...,yn = sin(x)
-> eval(['y',num2str(x),'=',num2str(x^2),';'])
3、 load m1.mat,...,load m100 mat
-> eval(['load m',num2str(x),'.mat']
进阶
4、xlswrirte('data3.xlsx',data3)
-> eval(['xlswrite(''data',num2str(i),'.xlsx'',','data',num2str(i),')'])
https://blog.csdn.net/qq_38412868/article/details/79185883

这个具体是如何得到的,我目前还是不太清楚
xlswrirte( + 'data3' + .xlsx' + , +data + num2str(i) + )
xlswrirte( + 'data +num2str(i) + .xlsx' + , +data + num2str(i) + )
这样吗?
这行代码似乎存在格式问题
改成这样或许好点
eval(['xlswrite(',''data',num2str(i),'.xlsx'',','data',num2str(i),')'])
5、
a1=reshape(M(1,:),2,3);
a2=reshape(M(2,:),2,3);
...
ak=reshape(M(k,:),2,3);
-> eval(['a',num2str(k),'=reshape(M(',num2str(k),',:),2,3);'])
此段代码运行正确,具体拆解如下:
a + num2str(k) + =reshape(M( + num2str(k) + ,:),2,3);
6、此段代码运行失败(求大神指点迷津)
xlswrite('data4.xls',b,1,'B2');
xlswrite('data4.xls',b,1,'B3');
...
xlswrite('data4.xls',b,1,'B4');
根据4 的写法,代码具体写法如下:
-> xlswrite( + 'data4.xls' + b,1, + 'B + num2str(k) + ');
eval(['xlswrite('data4.xls',b,1,'B','num2str(k),')']);

不过显示仍然运行错误

----更新
关于引号的使用:
使用两个单引号即可,
以6 为例:
xlswrite( + 'data4.xls' + b,1, + 'B + int2str(k)+ ');
s = ['xlswrite(' '''data5.xls''' ',b,1,' '''B' int2str(k) ''');']
eval(s)
结果如下:
s =
xlswrite('data5.xls',b,1,'B129');
目标达成!
网友评论