How to write output data in excel csv files?

My for loops are as follows;
number of image files are 114
number of shape files are 242
for m = 1:length(imgfiles)
for n = 1:length(shapefiles)
avg_village_ndvi(n,m) = mean(village_ndvi(mask));
avge_village_ndre1(n,m) = mean(village_ndre1(mask));
avg_village_cire(n,m) = mean(village_cire(mask));
CAF(n,m) = nnz(village_ndvi(mask) > 0.4) / (size(village_ndvi,1)*size(village_ndvi,2))
end
end
I want to write these data in seperate excel csv file with file name as 'c:\data\ndvi_predictors.csv','c:\data\ndre1_predictors.csv','c:\data\cire_predictors.csv' and 'c:\data\caf_predictors.csv'.
I request all to please suggest me how to do it in above mentioned matlab code.
I would appreciate any help in this regard.
Dave

 Réponse acceptée

Voss
Voss le 25 Mar 2024
After the for loops:
writematrix(avg_village_ndvi,'c:\data\ndvi_predictors.csv')
writematrix(avge_village_ndre1,'c:\data\ndre1_predictors.csv')
writematrix(avg_village_cire,'c:\data\cire_predictors.csv')
writematrix(CAF,'c:\data\caf_predictors.csv')

23 commentaires

Devendra
Devendra le 25 Mar 2024
Thank you so much for helping me out in writing output data into csv files. One more thing I want to add the first column as name of shape file followed by data in successive columns of each csv output file. How to do it please suggest me this also.
Once again thank you very much for your kind support.
Dave
Voss
Voss le 25 Mar 2024
Modifié(e) : Voss le 25 Mar 2024
You're welcome!
Here's how you can include the shape files' names as the first column:
names = cellstr(shapefiles(:));
writecell([names num2cell(avg_village_ndvi)],'c:\data\ndvi_predictors.csv');
writecell([names num2cell(avge_village_ndre1)],'c:\data\ndre1_predictors.csv');
writecell([names num2cell(avg_village_cire)],'c:\data\cire_predictors.csv');
writecell([names num2cell(CAF)],'c:\data\caf_predictors.csv');
If this answer solved the problem, please "Accept" it. Thanks!
Devendra
Devendra le 25 Mar 2024
I am very grateful to you for helping me out. Just one more additional thing I want to add. suppose I want to extract date stamp from image file names and add to first row of each csv file. For example name of image file is as follows
20240314_MAWANA-SUBSET
I want to extract the date stamp as 20240314 from the first image file and so on. These date stamps I want to write in first row of each csv file. How to write these date stamps in first row of each csv file.
I really appreciate your kind cooperation.
Dave
Voss
Voss le 25 Mar 2024
Modifié(e) : Voss le 25 Mar 2024
[~,fn] = fileparts(imgfiles);
img_names = regexp(fn,'\d+','match','once');
img_names = cellstr(reshape(img_names,1,[]));
names = cellstr(shapefiles(:));
writecell([{''} img_names; names num2cell(avg_village_ndvi)],'c:\data\ndvi_predictors.csv');
writecell([{''} img_names; names num2cell(avge_village_ndre1)],'c:\data\ndre1_predictors.csv');
writecell([{''} img_names; names num2cell(avg_village_cire)],'c:\data\cire_predictors.csv');
writecell([{''} img_names; names num2cell(CAF)],'c:\data\caf_predictors.csv');
Devendra
Devendra le 30 Mar 2024
Modifié(e) : Devendra le 30 Mar 2024
Thank you very much for your kind help. I have encountered a small problem as follows
Error using fileparts (line 15)
Input must be a row vector of characters, or a string scalar, or a cellstr, or a string matrix.
Error in ds_indices_caf (line 91)
[~,fn] = fileparts(imgfiles);
Please suggest me how to fix it.
Deva
Voss
Voss le 30 Mar 2024
Modifié(e) : Voss le 30 Mar 2024
That error is due to imgfiles being of an unexpected class. What class is imgfiles? To find out, please put the following just before the fileparts line, and show its output:
class(imgfiles)
Devendra
Devendra le 30 Mar 2024
Modifié(e) : Devendra le 30 Mar 2024
class(imgfiles)
ans = 'struct'
Please have a look at it and suggest me to fix it.
deva
I assume imgfiles is the struct returned from a dir() call. In that case, change the fileparts line to:
fn = {imgfiles.name};
If shapefiles is also a struct returned by dir(), then you'll have to modify the line defining names as well:
names = {shapefiles.name}.';
Devendra
Devendra le 30 Mar 2024
Modifié(e) : Devendra le 30 Mar 2024
It worked successfully. I am very much thankful to you.
Deva
Voss
Voss le 30 Mar 2024
You're welcome! Glad to hear it worked!
Devendra
Devendra le 18 Avr 2024
I want to write each line(row) two times in the following excel csv file. I request you to please suggest me how to do it in the following files
writecell([{''} img_names; names
num2cell(avg_village_ndvi)],'c:\data\ndvi_predictors.csv');
writecell([{''} img_names; names num2cell(avge_village_ndre1)],'c:\data\ndre1_predictors.csv');
writecell([{''} img_names; names num2cell(avg_village_cire)],'c:\data\cire_predictors.csv');
writecell([{''} img_names; names num2cell(CAF)],'c:\data\caf_predictors.csv');
Devendra
C = [{''} img_names; names num2cell(avg_village_ndvi)];
writecell(repelem(C,2,1),'c:\data\ndvi_predictors.csv');
C = [{''} img_names; names num2cell(avge_village_ndre1)];
writecell(repelem(C,2,1),'c:\data\ndre1_predictors.csv');
% and so on for the others
Devendra
Devendra le 19 Avr 2024
Thanks for your kind help. It worked well.
Devendra
Voss
Voss le 19 Avr 2024
You're welcome!
Devendra
Devendra le 21 Avr 2024
I want to use
fn = {imgfiles.name};
img_names = regexp(fn,'\d+','match','once');
img_names = cellstr(reshape(img_names,1,[]));
and want to extract the date stamp from the following file name
T43RGN_20210203T053029_B04_10m.jp2
as 20210203T053029
please suggest me how to get it using above mentioned lines.
Thanks for your kind help.
Devendra
Voss
Voss le 21 Avr 2024
Modifié(e) : Voss le 21 Avr 2024
img_names = regexp(fn,'_([\dT]+)_','tokens','once');
img_names = [img_names{:}];
Devendra
Devendra le 21 Avr 2024
Thank you so much for your help. Devendra
Voss
Voss le 21 Avr 2024
You're welcome!
gauri
gauri le 7 Mai 2024
Modifié(e) : gauri le 7 Mai 2024
Thanks for your kind help and support. I want to add five data sets column wise before writing into excel file. For example each data has dimension of 18x24 after adding column wise dimension of new data will be18x120. So I will be writing new data set into single excel file in place of five different excel files. Please suggest me how to do it using matlab.
I will appreciate your kind cooperation.
Gauri
Voss
Voss le 7 Mai 2024
all_data = [data1,data2,data3,data4,data5];

Then write all_data to file using an appropriate function (writematrix, writetable, writecell).

gauri
gauri le 7 Mai 2024
Thank you very much for your kind help.
Voss
Voss le 7 Mai 2024
You're welcome!
gauri
gauri le 19 Mai 2024
Modifié(e) : gauri le 19 Mai 2024
Once again I seek your kind help to retrieve the data using shape file. I am using the mask to extract the data using shape file as follows;
mask = reshape(isinterior(polygon, lon(:), lat(:)), [length(lat), length(lon)]);
% Convert the logical mask to uint16 format
maskConverted = uint16(mask);
% Apply the converted mask to the raster
imgMasked = img .* maskConverted;
The size of imgMasked is same as that of img(5490 5490 7). However, it contains non zero data over shape file area and zeros over rest of the image data. I wanted to retrieve the non zeros data from imgMasked as per the size of the shape file. I request you to please suggest me how to retrieve the desired data from imgMasked. I have kept the imgMasked.mat file on following google link;
I request you to please have a look on it and suggest me how to get required data from imgMasked.
I would be highly obliged to you.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Version

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by