John
John

Reputation: 63

Using xlswrite to save numerical data

Hi I would like to save numerical data from an operation inside a loop. Lets see my segmentation example:

    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); 

    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

So the point is to save the 35 results in one column of an xls file.

I was trying to do this but only the last element of the loop is printed in the exel file...

filename = 'testdata.xlsx';
A = vertcat('Test', 'Results', num2cell(a'));
sheet = 1;
xlRange = 'F03';
xlswrite(filename,A,sheet,xlRange)

Can please anyone help me out? I know there many questions related to this one but none of them covers my issue...

I will leave here one image for testing: Sample Image in order to run the algorithm and replicate my situation

Thanks a lot in advance. John

Upvotes: 0

Views: 187

Answers (1)

user1543042
user1543042

Reputation: 3440

As @excaza said, you need to expand b

a=1:35;

for i = a
  b=10+a;
end

filename = 'testdata.xlsx';
A = vertcat('Example', 'Results', num2cell(b'));
sheet = 1;
xlRange = 'B1';
xlswrite(filename,A,sheet,xlRange)

Upvotes: 2

Related Questions