Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

loading .txt file

Asked by susan on 26 Oct 2011

Hi, How do I load a file like this (3 lines):

-------------
#A=AY/func/7_corrs/broca_4mm_Z_2standard.nii.gz  B=AY2/func/7_corrs/broca_4mm_Z_2standard.nii.gz
--------------
#A           #B           #(A uni B)   #(A int B)   #(A \ B)     #(B \ A)     %(A \ B)    %(B \ A)    Rx(B/A)    Ry(B/A)    Rz(B/A)
--------------
127239       173524       204106       96657        30582        76867        24.0351     44.2976     0.9209     0.9803     1.3314
---------------

What I want to extract in Matlab is..

#A = 127239
#B = 173524
#(A uni B) = 204106

etc...

Thank you,

2 Comments

Matt Tearle on 26 Oct 2011

Can you please fix the formatting to show how the file appears. Thanks. Also, can you explain more how you want MATLAB to extract and package the information: do you want strings "#A = 127239" or variables A, B, etc with values 127239, ... Do you want those labels (A, B, ...) to be fixed or taken from a line of the file. And so on.

Fangjun Jiang on 26 Oct 2011

use {}Code format next time.

susan

Products

No products are associated with this question.

2 Answers

Answer by Matt Tearle on 26 Oct 2011
Accepted answer

If you don't need individual variable names then I'd probably go with the simplest approach of

data = dlmread('data.txt','',2,0);

If you have missing values or error codes or other weirdness, then use textscan.

If you have Statistics Toolbox, another approach would be to use dataset to import the data as a dataset array:

data = dataset('File','data.txt','headerlines',1);

The downside is that the variable names will be hideous, due to all the non-valid characters. If you wanted to get vaguely fancy (and had some pattern to how to interpret the names), you could use regexp:

fid = fopen('data.txt','rt');
hdr = fgetl(fid);
hdr = regexp(fgetl(fid),'\t','split');
fclose(fid);
hdr = regexprep(hdr,'#','No_');
hdr = regexprep(hdr,'%','Perc_');
hdr = regexprep(hdr,'\W','');
data = dataset('File','data.txt','headerlines',1);
data.Properties.VarNames = hdr

0 Comments

Matt Tearle
Answer by susan on 26 Oct 2011
  • #A=AY/func/7_corrs/broca_4mm_Z_2standard.nii.gz
  • #A #B #(A uni B) #(A int B)
  • 127239 173524 204106 96657

Hi The bullets indicate the 3 lines.I would like the numbers with any label. i.e. I want to be able to call B=173524 OR line3nos(2)=173524

Thank you, S

0 Comments

susan

Contact us