0

我需要将一些数据保存到现有表中。所以我有列名和一行有数据。现在我得到第二组信息,我需要把它放在第二行,依此类推。你能指出我在哪里可以找到这个吗?到目前为止,我已经这样做了。用 save( -struct) 玩过,但似乎不起作用。

if exist('table.mat','file')
...
...
else
    dataCell = [name,trez,score];
    colNames = {'Name','R','G','B','Shape'};
    uisave({'colNames','dataCell'},'table');
end

所以我检查是否有table.mat,如果没有,它会用一些传递的值创建它。现在table.mat存在我需要放置第二个值而不删除其他值。

更新

好的,我编写了这样的代码:

if exist('table.mat','file')
        dataCell = [name,num2cell(trez),num2cell(score)];
        save('table.mat', '-append','dataCell');
    else
        dataCell=[name,num2cell(trez),num2cell(score)];
        colNames={'Name','R','G','B','Shape'};
        uisave({'colNames','dataCell'},'table');
    end

但是当我使用以下方法保存数据时:

   dataCell = [name,num2cell(trez),num2cell(score)];
   save('table.mat', '-append','dataCell');

它删除旧条目。可以说在我的表格信息中如下:

姓名 | 右 | 克| 乙| 形状 |

橙色 | 239 | 135 | 2 | 0.87

然后,如果我尝试保存另一个条目,例如:

苹果 | 100 |31 |56 | 0.79

它删除了橙色。那么我需要添加一些东西或使用其他方法来保存这种信息吗?

4

1 回答 1

3

save命令可以带一个-append标志,它允许您将数据添加到现有文件而不覆盖旧数据。但是对于 .mat 文件,-append只允许您添加新变量。如果您指定 .mat 文件中已经存在的变量名称,它将被覆盖。

但是,如果您要保存到 ASCII 文件,则只需将数据附加到文件末尾即可。

这为您提供了两个选项。

  1. 使用 .mat 文件保存,但对于要保存的每个变量,您需要从 .mat 文件加载任何具有相同名称的变量,将旧变量与新变量组合,然后将其重新保存到文件中。
  2. 使用 ASCII 格式保存矩阵,然后在加载文件时从 ASCII 转换。

更新:重新阅读您的原始问题后,我不得不问为什么不在单个操作中保存而不是逐行保存?

于 2012-08-17T19:02:04.040 回答