0

我必须为多个图像运行我的代码并比较所有图像的输出。为了运行多个图像,我遵循了这个链接中给出的想法:Loading multiple images in MATLAB

它工作正常。现在,我必须将所有图像的结果导出到 excel 文件中。为此,我在 MATLAB 中使用 xlswrite 命令。我面临的问题是输出被覆盖在 excel 文件中的同一位置,所以在模拟结束时,我只有一个输出保存在 excel 文件中。将第一张图像的结果写入excel文件后,下一张图像的结果应写入下一个位置,依此类推。我无法这样做。请帮我解决一下这个。

我使用过的代码:

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

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

我的代码的最后五行:

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

试试这个

另一种选择是附加到数据并xlswrite在循环外调用一次。

于 2013-04-12T06:07:23.910 回答