0

一部のデータを既存のテーブルに保存する必要があります。だから私は列名とデータを持つ1つの行を持っています。ここで、2 番目の情報セットを取得し、それを 2 行目に配置する必要があります。これを見つけることができる場所を教えてください。私はこれまでこれを行ってきました。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他の値を削除せずに 2 番目の値を配置する必要があります。

アップデート

OK私はこのようなコードを作りました:

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 | ガ | ビ | 形状 |

オレンジ | 239 | 135 | 2 | 0.87

次に、次のような別のエントリを保存しようとすると:

りんご | 100 |31 |56 | 0.79

オレンジを削除します。この種の情報を保存するには、何かを追加するか、他の方法を使用する必要がありますか?

4

1 に答える 1

3

このsaveコマンドは-appendフラグを使用できるため、古いデータを上書きせずに既存のファイルにデータを追加できます。ただし、.mat ファイルの-append場合、新しい変数を追加することしかできません。.mat ファイルに既に存在する変数名を指定すると、上書きされます。

ただし、ASCII ファイルに保存する場合、データは単にファイルの末尾に追加されます。

これにより、2 つのオプションが提示されます。

  1. .mat ファイルを使用して保存しますが、保存する変数ごとに、同じ名前の変数を .mat ファイルから読み込み、古い変数と新しい変数を結合してから、ファイルに再保存する必要があります。
  2. ASCII 形式を使用して行列を保存し、ファイルをロードするときに ASCII から変換します。

更新:元の質問を読み直した後、行ごとに保存するのではなく、1回の操作で保存しないのはなぜですか?

于 2012-08-17T19:02:04.040 に答える