将下一行保存到.mat

时间:2012-08-17 18:48:32

标签: matlab

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

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');

删除旧条目。让我们在我的表中说信息如下:

姓名| R | G | B |形状|

橙色| 239 | 135 | 2 | 0.87

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

Apple | 100 | 31 | 56 | 0.79

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

1 个答案:

答案 0 :(得分:3)

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

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

这为您提供了两种选择。

  1. 使用.mat文件保存,但是对于要保存的每个变量,您需要从.mat文件中加载任何具有相同名称的变量,将旧变量与新变量组合,然后将其重新保存到文件中。
  2. 使用ASCII格式保存矩阵,然后在加载文件时转换为ASCII。
  3. 更新:在重新阅读原始问题之后,我不得不问为什么不在一次操作中保存而不是逐行保存?