Skip to Main Content Skip to Search
Home |   Select Country  Choose Country  |  Contact Us  |  Cart Store 
Create Account | Log In
Products & Services Solutions Academia Support User Community Company

Technical Solutions

How do I write a cell array of strings to a file using DLMWRITE or CSVWRITE functions in MATLAB?


Date Last Modified: Thursday, January 14, 2010
Solution ID:   1-1CCMDO
Product:   MATLAB
Reported in Release:   No Release
Fixed in Release:   R2009b
Platform:   All Platforms
Operating System:   All OS
 

Subject:

How do I write a cell array of strings to a file using DLMWRITE or CSVWRITE functions in MATLAB?

Problem Description:

I would like to write my cell array out to a delimited file, but DLMWRITE and CSVWRITE do not support it.

Solution:

This change has been incorporated into the documentation in MATLAB 7.9 (R2009b). For previous releases, read below for any additional information:

The ability to save a cell array of strings to a text file with one function is not available in MATLAB but can be implemented in a number of methods. You will need to use low-level file I/O routines to achieve this. Depending on whether you have stored numbers or text in your cell array, you may need to modify the code below to be specific for your cell array:

fid=fopen('myFile.csv','wt');

x={'sin','cos','tan','log','exp'};

[rows,cols]=size(x)

for i=1:rows
fprintf(fid,'%s,',x{i,1:end-1})
fprintf(fid,'%s\n',x{i,end})
end

fclose(fid);

The same may be achieved without a loop, but using string and cell manipulation functions available in MATLAB:

fid=fopen('myFile.csv','wt');

x={'sin','cos','tan','log','exp'};

csvFun = @(str)sprintf('%s,',str);
xchar = cellfun(csvFun, x, 'UniformOutput', false);
xchar = strcat(xchar{:});
xchar = strcat(xchar(1:end-1),'\n');

fprintf(fid,xchar)

fclose(fid);

If you do have to modify any of the above code, some functions that may be helpful are: ISNAN, ISNUMERIC, ISCHAR, FPRINTF, FOPEN and FCLOSE.

You can find more information about each of these functions in the documentation. For example, to read more on ISNAN, type the following at the MATLAB command prompt:

doc isnan

or

help isnan

 

Related Solutions:

Please provide feedback to help us improve this Solution
Contact support
E-mail this page
Print this page