tab delimited .txt file

In order to write a matrix as a tab delimited .txt file I can use the following command:
dlmwrite(Filename, Data, 'delimiter', '\t');
Say that the dimensions of 'Data' is [m n], how is it possible to include a non numeric vector (i.e. vector containing words) as m(1) in order to state what each colummn refers to in the .txt file?
thanks

 Accepted Answer

Suppose that your Data is:
Data = [1 2 3;4 5 6; 7 8 9];
Would you like to create such a file?
line1 1 2 3
line2 4 5 6
line3 7 8 9
If so, this is my suggestion:
Data = [1 2 3;4 5 6; 7 8 9];
names = {'line1','line2','line3'};
fid = fopen('test_file','w');
for k=1:3
fprintf(fid,'%s\t%.2f\t%.2f\t%.2f\n',names{k},Data(k,:));
end
fclose(fid);

4 Comments

ricco
ricco on 18 Nov 2011
It's nearly what I need, although the .txt file shows the data all in one row:
linw1 1 2 3 line2 4 5 6 line3 7 8 9
Instead I need the data in 3 rows and 3 columns with line1 line2 line3 as headers on each column.
Change the 'w' in the fopen() to 'wt'
ricco
ricco on 19 Nov 2011
thanks that works perfectly. How would this code be altered if I needed the format of the .txt file to have the header on the top of each column of the matrix not on each row?
What if the data matrix had more than a few columns, say thousands? Would you have to type a format (e.g. .2f\t%) for each column?

Sign in to comment.

More Answers (2)

For more recent releases of Matlab (r2013b or later), use writetable() with the delimiter set to \t.
writetable(T,'tabledata2.txt','Delimiter','\t')
Walter Roberson
Walter Roberson on 18 Nov 2011

0 votes

dlmwrite() can only be used for numeric data or for pure character data (an ugly hack with little purpose). dlmwrite() cannot be used for mixing character data and numeric data.
Grzegorz's proposed code looks fine.

Categories

Tags

Asked:

on 18 Nov 2011

Commented:

on 11 Nov 2024

Community Treasure Hunt

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

Start Hunting!