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

New to MATLAB?

Extract sentences of a specific pattern

Asked by Priya Narayanan

Priya Narayanan (view profile)

on 20 Jun 2012

I have opened an ascii file using the following code

fid=fopen('test.asc','r');
s = '';
while ~feof(fid)
   line = fgetl(fid);
   s = strvcat(s,line);
end

Now the file contains sentences of the following pattern:

after slot 16: adjust slottime 1.73149698229 side_stiffness 208.220358294
after slot 32: adjust slottime 1.28516669432 side_stiffness 215.966524494
after slot 48: adjust slottime 1.0 side_stiffness 241.34853159

What is the best way to extract all the sentences of this format.

Thanks

0 Comments

Priya Narayanan

Priya Narayanan (view profile)

Tags

Products

No products are associated with this question.

2 Answers

Answer by per isakson

per isakson (view profile)

on 20 Jun 2012

Try

%%
str = 'after slot 16: adjust slottime 1.73149698229 side_stiffness 208.220358294';
ptn = '^after slot \d+: adjust slottime [\d\.]+ side_stiffness [\d\.]+$';
%%
ii = regexp( str, ptn, 'start' );
%%
not( isempty( ii ) )

.

--- Cont. ---

I have coy&pasted the your three lines to cssm.asc. Try run

str = cssm(();

If that doesn't work try to modify the pattern, ptn, to match the lines in your real file.

    function str = cssm
    %%    
        fid = fopen( 'cssm.asc', 'r' );
        cac = cell(0);
        ptn = '^after slot \d+: adjust slottime [\d\.]+ side_stiffness [\d\.]+$';
    %%
        while ~feof( fid )
            line = fgetl( fid );
            if not( isempty( regexp( line, ptn, 'start' ) ) )
                cac = cat( 1, cac, {line} );
            end
        end
        fclose( fid );
        str = char( cac );
    end

1 Comment

Priya Narayanan

Priya Narayanan (view profile)

on 20 Jun 2012

I get this error when I put in my string (it is two dimension). What would be the best way to work aroind this

??? Error using ==> regexp
The first argument (STRING) must be a
one-dimensional array of char or cell arrays of
strings.

per isakson

per isakson (view profile)

Answer by Priya Narayanan

Priya Narayanan (view profile)

on 20 Jun 2012
 The content of my .asc file is as follows and I would like to extract all the sentences of the form
"after slot 16:...." and save it in the form of an array or structure.
Thanks

dir: /home/imt/therapist/005/therapy/20110808_Mon game: random_1 time: 095733 starting slottime: 2.0 starting stiffness: 200.0 after slot 16: adjust slottime 1.73149698229 side_stiffness 208.220358294 after slot 32: adjust slottime 1.28516669432 side_stiffness 215.966524494 after slot 48: adjust slottime 1.0 side_stiffness 241.34853159 after slot 64: adjust slottime 1.0 side_stiffness 242.027623793 after slot 80: adjust slottime 1.0 side_stiffness 247.294544674

pm display: slotnum 81 init 0 min_dist_from_target 4 robot_power 48 jerkmag 145 dist_straight_line 9 after slot 128: adjust slottime 1.0 side_stiffness 246.411422738

pm display: slotnum 161 init 0 min_dist_from_target 4 robot_power 42 jerkmag 137 dist_straight_line 7 after slot 176: adjust slottime 1.0 side_stiffness 246.162323485 after slot 224: adjust slottime 1.0 side_stiffness 248.961077598

pm display: slotnum 241 init 1 min_dist_from_target 3 robot_power 69 jerkmag 146 dist_straight_line 9 after slot 272: adjust slottime 1.0 side_stiffness 249.723937086

pm display: slotnum 321 init 0 min_dist_from_target 3 robot_power 60 jerkmag 151 dist_straight_line 7

1 Comment

per isakson

per isakson (view profile)

on 20 Jun 2012

I cannot interpret this dump.

Priya Narayanan

Priya Narayanan (view profile)

Contact us