0

複数の画像に対してコードを実行し、すべての画像の出力を比較する必要があります。複数の画像を実行するために、このリンクで提供されているアイデアに従いました: Loading multiple images in MATLAB

正常に動作しています。ここで、すべての画像の結果を Excel ファイルにエクスポートする必要があります。この目的のために、MATLAB で xlswrite コマンドを使用しています。私が直面している問題は、出力が Excel ファイルの同じ場所に上書きされるため、シミュレーションの最後に Excel ファイルに保存される出力が 1 つだけになることです。最初の画像の結果を Excel ファイルに書き込んだ後、次の画像の結果を次の場所に書き込む必要があります。すべての画像について同様です。私はそうすることができません。これで私を助けてください。

私が使用したコード:

ex = {'IDR', 'CAR', 'PSNRN', 'psnr'; IDR CAR psnrn psnr}

xlswrite('output.xls', ex, 'SBF', 'E1');

私のコードの最後の5行:

mse=kk/(m*n);
psnr=10*(log10((double(255*255))/mse));

display(psnrn);
display(psnr);

ex = {'IDR', 'CAR', 'PSNRN', 'psnr'; IDR CAR psnrn psnr}

xlswrite('output.xls', ex, 'SBF', 'E1');

end

必要に応じて、完全なコードを提供します。助けてください、私は MATLAB を初めて使用します

4

2 に答える 2

2

常に同じ場所に書き込む理由は、常に同じセル参照を指定するため'E1'です。OPで提案されているように、特殊なxls追加スクリプトを使用するか、ループ内のセル参照を変更するか、一度にすべてを書き込む必要があります。

例:

ループで書く:

xlStartColStr = 'E';
xlStartRow = 1;
for myIndex = 1:something
    % Do your stuff...

    try
        ex = {...};
        xlStartRow = myIndex;
        cellRef = [xlStartColStr num2str(xlStartRow)];
        xlswrite('output.xls', ex, 'SBF', cellRef);
    catch err
        error([mfilename ':ErrorSavingFile'], ...
            'Could not save file for image %g : %s', myIndex, err.message);
    end
end

または、すべてを一度に書きます。

allMyData = {};
for myIndex = 1:something
    % Do your stuff...

    ex = {...};
    allMyData = [allMyData; ex];
end

cellRef = 'E1';
try
    xlswrite('output.xls', allMyData, 'SBF', cellRef);
catch err
    error([mfilename ':ErrorSavingFile'], ...
        'Could not save file for images : %s', err.message);
end

ループ内バージョンは、何かが失敗した場合に追加情報を提供するためのものですが、ループなしバージョンでもこれtry...catchを行うことをお勧めします。そのため、そこにも含めました。最初の方法は、残りが有効でない場合でもxlsread(エラーを警告または何らかのログメッセージに変更するだけで) データの一部を保存できますが、遅くなります。

于 2013-04-12T07:21:09.907 に答える
1

これを試してください

もう 1 つのオプションは、データに追加しxlswrite、ループの外で 1 回呼び出すことです。

于 2013-04-12T06:07:23.910 に答える