how to create a .dat files

64 次查看(过去 30 天)
Carey-anne
Carey-anne 2014-5-26
I have an .xls file, with 60 arrays of purely numeric values (no variable names or dates) that i would like to convert to a .dat file. I've tried importing the xls into Matlab and saving it as a .dat file. This creates a .dat file but i get the following error when i try to load it:
>> load xdata.dat
??? Error using ==> load
*Number of columns on line 1 of ASCII file* xdata.dat
*must be the same as previous lines.*

回答(2 个)

Image Analyst
Image Analyst 2014-5-26
Use xlsread() to get the raw data (the third output argument.) Then use fprintf() to write out a .dat file in text form, or fwrite() to write out as binary. Examples are in the help for those functions.
  3 个评论
Image Analyst
Image Analyst 2014-5-27
Num is probably a cell array, especially if there are 60 separate tables of various sizes, so you can't write it out like that. You have to write out each cell one at a time (untested code follows).
for col = 1 : cols
for row = 1 : rows
if ~isnan(num{row, col})
fprintf(fid, '%f, ', num{row, col});
end
end
fprintf(fid, '\n');
end
Please read the FAQ for a better understanding of cell arrays.
By the way you have to use a backslash with \n, not a forward slash.
Carey-anne
Carey-anne 2014-5-27
Thanks much for the clues, I discovered an easier code:
close all;
clear all;
%load excel file 65 arrays with 64 datapoints for each array
[num, txt, raw] = xlsread ('xdata.xls');
%write raw data to .dat file
dlmwrite('xdata.dat',raw, ' ')
% load .dat file
load xdata.dat

请先登录,再进行评论。


Jerin Joseph Koshy
编辑:Walter Roberson 2018-2-3
space = ' '; % placeholder between the columns
%%open the file
tfile = fopen([filename '.dat'], 'w'); % overwrites existing file!
%%write the table top
for index = 1 : 2 : length(varargin)
fprintf(tfile, char(varargin(index)));
fprintf(tfile, space);
end
%%write the data
for index1 = 1 : length(varargin{2})
fprintf(tfile, '\r\n'); % newline
for index2 = 2 : 2 : length(varargin)
% values from data-vectors
fprintf(tfile, '%12.9f', varargin{index2}(index1));
fprintf(tfile, space);
end
end
%%close the file
fclose(tfile);
tfile value is showing -1 and getting error as
Error using fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in CreateTexDat (line 28)
fprintf(tfile, char(varargin(index)));
any solution??????
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fid = fopen ('xdata.dat', 'w');
>> fclose(fid)
Error using fclose
Invalid file identifier. Use fopen to generate a valid file identifier.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2 个评论
Image Analyst
Image Analyst 2018-2-3
Jerin, what is this about? Is it your "Answer" to Carey-anne's question? It looks like there is an error, so what is she supposed to do with this answer?
Are you sure you posted this on the right/intended page? Do you have a question?
Walter Roberson
Walter Roberson 2018-2-3
You do not have write access to the directory you are cd'd to.

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by