textscan and fscanf for text with some rows only text and some rows only numbers

12 vues (au cours des 30 derniers jours)
Espen
Espen le 18 Nov 2011
>> matrix=[1:4;4:7]
matrix =
1 2 3 4
4 5 6 7
>> save onematrix.reef matrix -ascii
>> fid=fopen('onematrix.reef', 'a')
fid =
4
>> fprintf(fid,'a jeep\n in %s', 'Egypt')
ans =
16
>> fclose(fid)
ans =
0
>> fid=fopen('onematrix.reef','r')
fid =
4
>> while ~feof(fid)
fgetl(fid)
end
ans =
1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000
ans =
4.0000000e+000 5.0000000e+000 6.0000000e+000 7.0000000e+000
ans =
a jeep
ans =
in Egypt
>>
I opened the file above with fgetl but I wondered if I could open it with textscan or fscanf even though the lines had no common system of words and numbers like
a 3 c
b 22 e
r 678 g
is it possible?
  1 commentaire
Walter Roberson
Walter Roberson le 18 Nov 2011
Do you want all the numbers read, even if they occur on lines with text, or do you want to skip everything on a line that has text in it (other than the 'e', '.', '+' and '-' of the fixed-point format) ?

Connectez-vous pour commenter.

Réponses (1)

Fangjun Jiang
Fangjun Jiang le 19 Nov 2011
If the numerical data and text strings are in two separate chunks, like the file 'onematrix.reef' you created, function importdata() or uiimport() should be able to read it.
If the mixing pattern of numerical data and text strings are consistent, like the example data at the end of your question, textscan() should be able to handle it.
If there is no consistent pattern, you best shot is to read in the whole contents and then use regexp() to process it.

Catégories

En savoir plus sur Text Data Preparation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by