将结果保存在循环函数的xlsx文件中

时间:2015-06-27 10:00:24

标签: matlab function xlsxwriter

我正在测试各种分割算法以便比较它们的结果。为了做到这一点,我有特定的算法来计算分割过程后每个图像中存在的对象。然后,因为我有一个大的图像数据集,手动注册每个图像分割的所有计数结果值是非常累人的。我正在尝试从matlab实现XLSWRITE函数来自动化该过程,但没有取得多大成功....

我使用的一种分割方法是找到圆圈的霍夫变换,你可以在这里看到代码:

    clear all, clc;

a=1:35;
A = arrayfun( @(x) sprintf( '%04d', x ), a, 'UniformOutput', false );
I = cellfun( @(b) imread( ['C:Teste/' b '/c1/' b '.png'] ), A, 'UniformOutput', false );

for i = a
    % Gaussian Filter
    W = fspecial('gaussian',[10,10],2);
    J = imfilter(I,W);

    % Finding Circular objects -- Houng Transform
    [centers, radii, metric] = imfindcircles(J,[5 10], 'Sensitivity',0.93,'Edge',0.27); 
    %[radius_parasites]=[5 10] 'Sensitivity',0.93,'Edge',0.27)
    %[radius_nucleus]=[10 20] 'Sensitivity',0.87,'Edge',0.27)

    idx_mask = ones(size(radii));

    min_dist = 2; % relative value.
    for i = 2:length(radii)
        cur_cent = centers(i, :);
        for j = 1:i-1
            other_cent = centers(j,:);
            x_dist = other_cent(1) - cur_cent(1);
            y_dist = other_cent(2) - cur_cent(2);
            if sqrt(x_dist^2+y_dist^2) < min_dist*(radii(i) + radii(j)) && idx_mask(j) == 1
                idx_mask(i) = 0;
                break
            end
        end
    end

    idx_mask = logical(idx_mask);
    centers_use = centers(idx_mask, :);
    radii_use = radii(idx_mask, :);
    metric_use = metric(idx_mask, :);

    viscircles(centers_use, radii_use,'EdgeColor','b');
    a=length(centers_use)
end

所以我想将变量a保存在一个列中,其中包含我拥有的35个图像的标题单元格(循环每个图像),如下所示:

      Results_Al_1
     -------------
      a1
      a2
        ...

为此,我试图这样做:

filename = 'testdata.xlsx';
A = {'Al_1';'Results of Al 1';a};
sheet = 1;
xlRange = 'B1';
xlswrite(filename,A,sheet,xlRange)

所以,如果有人能帮助我,我真的很感激。

提前致谢!

0 个答案:

没有答案