保存在循环使用eval或num2str吗?
23日视图(30天)
显示旧的评论
我创建64 3 d数组的一个大数组。在循环的每次迭代,我只想保存的文件中创建循环。所有的代码工作除了与保存功能。自从我数组的名字是eval函数基础上的,我不知道如何把它的保存功能。今年也只是用num2str函数(在代码中注释),没有运气。这是可能的,它是怎么做的?你的帮助非常感激! !
%单独event_int_all 3 d阵列基于年到64年的3 d数组
ct = 1;
为k = 1:64;
年= 1947 + k;
eval ([“events_”num2str(年)' =南(66、6、60);“]);
为j = 1:尺寸(event_int_all 3);
为i = 1:尺寸(event_int_all, 1);
如果我= = 1 & & j ~ = 1 & & event_int_all(我,1,j - 1) ~ = k;
ct = 1;
结束% i
如果isnan (event_int_all(我:j)) = = 1;
继续
elseif我= = 1 & & j ~ = 1 & & event_int_all(我,1,j - 1) ~ = k;
ct = 1;
elseifevent_int_all (i, j) = = k;eval ([“events_”num2str(年)“(我:ct)”,' = event_int_all(我:j);“]);
其他的
继续
结束%如果
结束%市中心
ct = ct + 1;
结束%之内寻找
文件名= [“year_”num2str(年)“.mat”];
保存(“文件名”,eval (“events_”num2str(年))));% ! !不工作
%也尝试保存(“文件名”,“events_”num2str(年))是行不通的
结束%叉
0评论
接受的答案
1月
2012年7月20日
编辑:1月
2012年7月20日
你可以省略邪恶的EVAL。当你看到它会引起问题,因为它曾经是。
% eval ([events_, num2str(年)' =南(66、6、60);']);
data =南(66、6、60);
% eval ([events_, num2str(年),“(我:ct)”,“= event_int_all(我:j); '));
数据(我:ct) = event_int_all(我:j);
%保存(“文件名”,eval ([‘events_ num2str(年))))
S =结构(sprintf (“events_ % d ',y)、数据);
保存(“文件名”,“年代”,“结构”);
EVAL降低了程序的效率,代码的可维护性,一生的程序员和论坛服务器的带宽。