Borrar filtros
Borrar filtros

how to create a .dat files

30 visualizaciones (últimos 30 días)
Carey-anne
Carey-anne el 26 de Mayo de 2014
Comentada: Walter Roberson el 3 de Feb. de 2018
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.*

Respuestas (2)

Image Analyst
Image Analyst el 26 de Mayo de 2014
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 comentarios
Image Analyst
Image Analyst el 27 de Mayo de 2014
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 el 27 de Mayo de 2014
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

Iniciar sesión para comentar.


Jerin Joseph Koshy
Jerin Joseph Koshy el 3 de Feb. de 2018
Editada: Walter Roberson el 3 de Feb. de 2018
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 comentarios
Image Analyst
Image Analyst el 3 de Feb. de 2018
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 el 3 de Feb. de 2018
You do not have write access to the directory you are cd'd to.

Iniciar sesión para comentar.

Categorías

Más información sobre String Parsing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by