保存在循环使用eval或num2str吗?

23日视图(30天)
尼娜
尼娜 2012年7月20日
我创建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(年))是行不通的
结束%叉

接受的答案

1月
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降低了程序的效率,代码的可维护性,一生的程序员和论坛服务器的带宽。
1评论
尼娜
尼娜 2012年8月7日
是的!sprintf函数是做这项工作的关键。谢谢你!

登录置评。

答案(1)

詹姆斯Tursa
詹姆斯Tursa 2012年7月20日
保存(文件名,(“events_”num2str(年)]);

类别

找到更多的在循环和条件语句帮助中心文件交换

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!