writing multiple rows to excel sheet

I have a dataset. I extracted features from it. Now I want to write it into an excel sheet. But only last row of combined vector is writing into excel file.I put xlswrite() function after loop only. How can solve this problem?

7 Comments

Please copy your code here. It sounds like you aren't indexing properly within your loop, and are not saving all of the data to be written.
location = 'C:\Users\win7\Documents\MATLAB\main_prjct\dataset\New Plant Diseases Dataset\Grape_disease';
ds = imageDatastore(location) ;
z=1;
while hasdata(ds)
seg_img = read(ds);
%seg_img=imread('blackMeasles_10.jpg');
%figure,imshow(seg_img);
img = rgb2gray(seg_img);
%figure,imshow(img);
%rgb
r=seg_img(:,:,1);
g=seg_img(:,:,2);
b=seg_img(:,:,3);
%hsv and I
hsvimg = rgb2hsv(seg_img);
h=hsvimg(:,:,1);
s=hsvimg(:,:,2);
v=hsvimg(:,:,3);
I=(r+g+b)/3;
%lab
labimg = rgb2lab(seg_img);
L=labimg(:,:,1);
a=labimg(:,:,2);
B=labimg(:,:,3);
L_Otsu1 = im2bw(img,graythresh(img)); % Otsu Segmentation
%figure,imshow(L_Otsu1);
%%feature Extraction
%Disease Area
prop1=regionprops(img );
%figure,imshow(prop);
ar1=cat(1,prop1.Area);
[dis_Ar,l]=max(ar1);
%disease Perimeter
e1=bwperim(L_Otsu1);
dis_premiter=nnz(e1);
% disease Length
dis_major=regionprops(e1,'MajorAxisLength');
dis_major=dis_major.MajorAxisLength;
%dis_major(z)=dis_major;
% Leaf Width
dis_minor=regionprops(e1,'MinorAxisLength');
dis_minor=dis_minor.MinorAxisLength;
%dis_minor=dis_minor;
glcms = graycomatrix(img);
%Evaluate 13 features from the disease affected region only
% Derive Statistics from GLCM
stats = graycoprops(glcms,'Contrast Correlation Energy Homogeneity');
%Disease contrast
dis_Contrast = stats.Contrast;
%Disease correlation
dis_Correlation = stats.Correlation;
%Disease energy
dis_Energy = stats.Energy;
%Disease homogenity
dis_Homogeneity = stats.Homogeneity;
%Disease mean
dis_Mean= mean2(seg_img);
dis_meanr=mean2(r);
dis_meang=mean2(g);
dis_meanb=mean2(b);
dis_meanh=mean2(h);
dis_means=mean2(s);
dis_meanv=mean2(v);
dis_meanI=mean2(I);
dis_meanL=mean2(L);
dis_meana=mean2(a);
dis_meanB=mean2(B);
dis_col_mean= (dis_meanr+dis_meang+dis_meanb+dis_meanh+dis_means+dis_meanv+dis_meanI+dis_meanL+dis_meana+dis_meanB)/10;
%Disease Sd
dis_sd = std2(seg_img);
dis_sdr = std2(r);
dis_sdg = std2(g);
dis_sdb = std2(b);
dis_sdh = std2(h);
dis_sds = std2(s);
dis_sdv = std2(v);
dis_sdI = std2(I);
dis_sdL = std2(L);
dis_sda = std2(a);
dis_sdB = std2(B);
dis_col_sd=(dis_sdr+dis_sdg+dis_sdb+dis_sdh+dis_sds+dis_sdv+dis_sdI+dis_sdL+dis_sda+dis_sdB)/10;
%Disease entropy
dis_Entropy = entropy(seg_img);
dis_Entropyr = entropy(r);
dis_Entropyg = entropy(g);
dis_Entropyb = entropy(b);
dis_Entropyh = entropy(h);
dis_Entropys = entropy(s);
dis_Entropyv = entropy(v);
dis_EntropyI = entropy(I);
dis_EntropyL = entropy(L);
dis_Entropya = entropy(a);
dis_EntropyB = entropy(B);
dis_col_Entropy=(dis_Entropyr+dis_Entropyg+dis_Entropyb+dis_Entropyh+dis_Entropys+dis_Entropyv+dis_EntropyI+dis_EntropyL+dis_Entropya+dis_EntropyB)/10;
%Disease rms
dis_RMS= mean2(rms(seg_img));
%Disease variance
dis_Variance = mean2(var(double(seg_img)));
dis_Variancer = mean2(var(double(r)));
dis_Varianceg = mean2(var(double(g)));
dis_Varianceb = mean2(var(double(b)));
dis_Varianceh = mean2(var(double(h)));
dis_Variances = mean2(var(double(s)));
dis_Variancev = mean2(var(double(v)));
dis_VarianceI = mean2(var(double(I)));
dis_VarianceL = mean2(var(double(L)));
dis_Variancea = mean2(var(double(a)));
dis_VarianceB = mean2(var(double(B)));
dis_col_Variance=(dis_Variancer+dis_Varianceg+dis_Varianceb+dis_Varianceh+dis_Variances+dis_Variancev+dis_VarianceI+dis_VarianceL+dis_Variancea+dis_VarianceB)/10;
%Disease smoothness
a1 = sum(double(seg_img(:)));
dis_Smoothness= 1-(1/(1+a1));
%Disease lbp features
dis_lbp_feat=extractLBPFeatures(img);
dis_lbp_feat=sum(dis_lbp_feat);
%Disease kurtosis
dis_Kurtosis = kurtosis(double(seg_img(:)));
dis_Kurtosisr = kurtosis(double(r(:)));
dis_Kurtosisg = kurtosis(double(g(:)));
dis_Kurtosisb = kurtosis(double(b(:)));
dis_Kurtosish = kurtosis(double(h(:)));
dis_Kurtosiss = kurtosis(double(s(:)));
dis_Kurtosisv = kurtosis(double(v(:)));
dis_KurtosisI = kurtosis(double(I(:)));
dis_KurtosisL = kurtosis(double(L(:)));
dis_Kurtosisa = kurtosis(double(a(:)));
dis_KurtosisB = kurtosis(double(B(:)));
dis_col_Kurtosis=(dis_Kurtosisr+dis_Kurtosisg+dis_Kurtosisb+dis_Kurtosish+dis_Kurtosiss+dis_Kurtosisv+dis_KurtosisI+dis_KurtosisL+dis_Kurtosisa+dis_KurtosisB)/10;
%Disease skewness
dis_Skewness = skewness(double(seg_img(:)));
dis_Skewnessr = skewness(double(r(:)));
dis_Skewnessg = skewness(double(g(:)));
dis_Skewnessb = skewness(double(b(:)));
dis_Skewnessh = skewness(double(h(:)));
dis_Skewnesss = skewness(double(s(:)));
dis_Skewnessv = skewness(double(v(:)));
dis_SkewnessI = skewness(double(I(:)));
dis_SkewnessL = skewness(double(L(:)));
dis_Skewnessa = skewness(double(a(:)));
dis_SkewnessB = skewness(double(B(:)));
dis_col_Skewness=(dis_Skewnessr+dis_Skewnessg+dis_Skewnessb+dis_Skewnessh+dis_Skewnesss+dis_Skewnessv+dis_SkewnessI+dis_SkewnessL+dis_Skewnessa+dis_SkewnessB)/10;
%Disease Inverse Difference Movement
m = size(seg_img,1);
n = size(seg_img,2);
in_diff = 0;
for i = 1:m
for j = 1:n
temp = seg_img(i,j)./(1+(i-j).^2);
in_diff = in_diff+temp;
end
end
dis_IDM = double(in_diff);
combined_vector=[dis_Ar dis_premiter dis_major dis_minor dis_Contrast dis_Correlation dis_Energy dis_Homogeneity dis_col_mean dis_col_sd dis_col_Entropy dis_RMS dis_col_Variance dis_Smoothness dis_lbp_feat dis_col_Kurtosis dis_col_Skewness dis_IDM dis_Mean dis_sd dis_Entropy dis_Variance dis_Kurtosis dis_Skewness]
z=z+1;
end
%
% xlswrite('Grape_blackMeasles.xlsx', allResults,'A2');
% header={'Disease_area','Disease_premiter','Disease_major','Disease_minor','Disease_contrast','Disease_correlation','Disease_energy','Disease_homogenity','Disease_Comb_mean','Disease_comb_sd','Disease_comb_Entropy','Disease_RMS','Disease_comb_variance','Disease_smoothness','Disease_lbp_feat','Disease_comb_kurtosis','Disease_comb_skewness','Disease_IDM'};
xlswrite('Grape_blackMeasles.xlsx', combined_vector)
%
I don't understand: what is the problem?
Only last row is entering into excel file.
This line throws me an error
Can you please use attachment button for long code?
Sajitha K.N.
Sajitha K.N. on 5 Mar 2020
Edited: Sajitha K.N. on 5 Mar 2020
This is the code

Sign in to comment.

Answers (1)

xlswrite('Grape_blackMeasles.xlsx', combined_vector)
Tells MATLAB to overwrite all of the sheet 1 in that xlsx file with the current content of combined_vector.
There is no option for xlswrite() or writetable() or related functions to append to an xlsx file from where-ever the current end happens to be. You have two options:
  1. read in all of the current content, append your new data in memory, and write out the combined data; or
  2. somehow figure out where the end of the current content is, and use the range specification of xlswrite() or writetable() to tell MATLAB where to write the new data.
If you are writing data in a loop starting from an empty sheet, then you can keep track of how many rows you have written so far in order to know where to start writing new rows.

Categories

Find more on Agriculture in Help Center and File Exchange

Tags

Asked:

on 5 Mar 2020

Answered:

on 5 Mar 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!