Borrar filtros
Borrar filtros

How to read text file and put it in to a matrix format.

4 visualizaciones (últimos 30 días)
My input file input.txt has the following inputs.
input.txt=
a b c d f
a c
a c d f g
a b e h
a c e f
I want input file converted into a matrix format ie.,
input=
[a b c d f
a c 0 0 0
a c d f g
a b e h 0
a c e f 0];
how will do this.
thanks.

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 9 de Nov. de 2012
fid = fopen('file1.txt');
line1 = fgetl(fid);
res=line1;
while ischar(line1)
line1 = fgetl(fid);
res =char(res,line1)
end
fclose(fid);
  1 comentario
Azzi Abdelmalek
Azzi Abdelmalek el 9 de Nov. de 2012
To add 0
[n,m]=size(res)
for k1=1:2:n
for k2=1:2:m
if isequal(res(k1,k2),' ')
res(k1,k2)='0'
end
end
end

Iniciar sesión para comentar.

Más respuestas (2)

David Barry
David Barry el 9 de Nov. de 2012
You should try looking up the functions textread and textscan if you want to do this programatically. Alternatively you can use the data import wizard GUI.
  1 comentario
David Barry
David Barry el 9 de Nov. de 2012
uiimport will open the wizard or it can be found from the menus.

Iniciar sesión para comentar.


Andrei Bobrov
Andrei Bobrov el 9 de Nov. de 2012
Editada: Andrei Bobrov el 9 de Nov. de 2012
f = fopen('test.txt'); c = textscan(f,'%s','Delimiter','\n');fclose(f);
c2 = c{1}(~cellfun(@isempty,c{1}))
c3 = regexp(c2,'\w*','match')
n = cellfun('size',c3,2);
m = max(n);
c4 = arrayfun(@(x,y)[c3{x},repmat({0},1,mod(-y,m))],(1:numel(n))',n(:),'un',0);
test = cat(1,c4{:});
or
fid = fopen('test.txt');
C = textscan(fid, '%s %s %s %s %s');
fclose(fid);
n = cellfun(@numel,C);
m = max(n);
C1 = cellfun(@(x,y)[x;repmat({'0'},mod(-y,m),1)],C,num2cell(n),'un',0)
Cout = [C1{:}]
Cout(cellfun(@isempty,Cout)) = {'0'}

Categorías

Más información sobre Text Data Preparation en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by