mantu pandey
mantu pandey

Reputation: 133

export MATLAB cell array into a csv file

I wish to write a some information in form of a csv file from a MATLAB code.

In the MATLAB code I have stored the header as a cell array:

ToCSV={'Location' 'Weight_factor' 'Average' 'Maximum' 'Minimum'};

I append rows to this cell array by looping. A sample statement is:

ToCSV={ToCSV; {'EastLocation' 0.5 1e+3 1e+4 1e+2} };

I wish to print this as a csv file. I used following routine which sort of giving errors:

fid = fopen('outfile.csv','w');
fprintf(fid,'%s, %s, %s, %s, %s\n',ToCSV{1,:});
fprintf(fid,'%s, %f, %10.2e, %10.2e, %f\n',ToCSV{2:end,:});
fclose(fid);

>>Error using fprintf
>>Function is not defined for 'cell' inputs.

Can some of you please provide pointers to achieve this? I also tried csvwrite, but apparently it doesn't go well with cell arrays.

Upvotes: 2

Views: 3149

Answers (2)

lennon310
lennon310

Reputation: 12689

aa=ToCSV{1,:};
bb=ToCSV{2,:};
fid = fopen('outfile.csv','w');
fprintf(fid,'%s, %s, %s, %s, %s\n',aa{:});
fprintf(fid,'%s, %f, %10.2e, %10.2e, %f\n',bb{:});
fclose(fid);

Upvotes: 1

chappjc
chappjc

Reputation: 30579

The problem is with the following statement

ToCSV={ToCSV; {'EastLocation' 0.5 1e+3 1e+4 1e+2} };

This makes a cell array inside a cell array so that when you index ToCSV you get a cell array. I think you want to concatenate a row like this:

ToCSV=[ToCSV; {'EastLocation', 0.5, 1e+3, 1e+4, 1e+2} ];

or

ToCSV(end+1,:) = {'EastLocation', 0.5, 1e+3, 1e+4, 1e+2};

The commas just make it easier to read.

Upvotes: 2

Related Questions