我有一个运行100次的循环。在每次迭代中,分配了string
,double
和table
,并且在下一次迭代中为它们分配了新值。我想要做的是累积这些值,并在循环结束后使用matlab result.mat
函数将总结果保存为save
。我已经尝试将它们放在单元阵列中,但到目前为止它还没有工作,所以如果有人可以请指出如何做到这一点。
这就是我所做的:
results_cell=(100,3);
.
.
.
results_cell(i,1)=stringA;
results_cell(i,2)=TableA;
results_cell(i,3)=DoubleA;
但它会出现此错误Coversion to Cell from Table is not possible
。所以我尝试使用TableA
将table2array
转换为双打数组,但我仍然得到Coversion to Cell from Double is not possible
答案 0 :(得分:2)
我认为使用结构将是存储数据的好方法,因为它们属于不同的类型,您可以为其分配有意义的字段名称以便于参考。
例如,让我们调用结构Results
。你可以像这样初始化它。
Results = struct('StringData',[],'TableData',[],'DoubleData',[])
既然你知道它的尺寸,你甚至可以这样做:
N = 100;
Results(N).StringData = [];
Results(N).TableData = [];
Results(N).DoubleData = [];
这会自动创建一个包含3个字段的1xN结构。
然后在循环中,您可以为每个字段分配相关数据,如下所示:
for k = 1:N
Results(k).StringData = String(k);
Results(k).TableData = Table(k);
Results(k).DoubleData = Double(k);
end
其中String(k)
,Table(k)
和Double(k)
只是实际数据的通用名称。
当您完成循环后,您可以使用单个索引和正确的字段名称访问任何类型的数据。
要保存.mat文件,请使用以下内容:
save SomeFileName.mat Results
您可以像使用任何.mat文件一样加载到工作区中:
例如:
S = load('SomeFileName.mat')
R = S.Results
希望有所帮助!