在MATLAB中使用xlswrite命令的问题

时间:2013-04-12 05:55:00

标签: image matlab

我必须为多个图像运行我的代码并比较所有图像的输出。为了运行多个图像,我已按照此链接中的想法给出: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的新手

2 个答案:

答案 0 :(得分: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无效(只是将错误更改为警告或某种日志消息),但速度会慢一些。

答案 1 :(得分:1)

尝试this

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