How to detect, open and process nxm matrices?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hi i have a code to open .txt files with nx1 matrices, it works very well:
[filename1,filepath1]=uigetfile({'*.txt*','Text Files'},...
'Select Data File 1');
cd(filepath1);
fp= fopen(filename1);
fgets(fp);
A = textscan(fp, '%f');
fclose(fp);
result=A{:};
But i want to open 1xm matrices with this code also. Do do this, i though to create an if-else structure to deteckt if the data matrix is nx1 or 1xm and then textscan it with textscan(fp, '%f') or textscan(fp, '%??'). Or is there another way to make this without creating an if-else structure? Thanks in advance!
0 comentarios
Respuesta aceptada
Jan
el 17 de Sept. de 2013
Editada: Jan
el 17 de Sept. de 2013
fp = fopen(filename1);
if fp == -1, error('Cannot open %s', filename1); end
fgets(fp); % Skipping a header line?!
pos = ftell(fp);
tmpLine = fgets(fp); % Read first line
tmpData = sscanf(tmpLine, '%g ', Inf);
nDataPerLine = length(tmpData);
fseek(fp, pos, -1); % Spool one line back
Data = fscanf(fp, '%g ', [nDataPerLine, Inf]);
fclose(fp);
0 comentarios
Más respuestas (2)
Azzi Abdelmalek
el 15 de Sept. de 2013
If your files are not big, you can use
v=dlmread('file.txt')
3 comentarios
Walter Roberson
el 15 de Sept. de 2013
textscan(fp, '%f')
is fine to read either format. End-of-line is considered to be "whitespace" for textscan(), so it will be fine without you having to code differently for the two situations.
If it is important that you process the two forms in different ways, then:
currentloc = ftell(fp); %find out where we are now
small_input = fread(fp, 20, '*uint8'); %read a little
fseek(fp, currentloc, 'bof'); %go back to where we were
if any(small_input == 10) %control J, newline, \n
%there was a newline, so it is n x 1 rather than 1 x n.
...
else
%it was 1 x n
end
2 comentarios
Ver también
Categorías
Más información sobre Text Files en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!