保存一个字符串,双重和表格Matlab

时间:2015-04-15 03:16:30

标签: matlab

我有一个运行100次的循环。在每次迭代中,分配了stringdoubletable,并且在下一次迭代中为它们分配了新值。我想要做的是累积这些值,并在循环结束后使用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。所以我尝试使用TableAtable2array转换为双打数组,但我仍然得到Coversion to Cell from Double is not possible

1 个答案:

答案 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

希望有所帮助!