How can I parse a character matrix for individual elements without using TEXTSCAN iteratively?

7 visualizzazioni (ultimi 30 giorni)
TEXTSCAN can only read one line at a time if the input is a string or a character matrix. If I have an array, with several thousand lines of strings, I do not want to run it iteratively through TEXTSCAN and I do not want to have to write it out to a file before I can read it in again.
I would like to know if there is a way to parse all the rows without using a FOR loop.

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 27 Giu 2009
One solution to this issue is to use a regular expression to parse the character matrix.
Suppose we start with the following 2xN character array, where N is the number of characters in each row.
A = ['abc 46 6 ghi'; 'def 7 89 jkl'];
As a first step, we use the REGEXP command to parse array 'A' for numeric-valued strings, including floating point values with the following regular expression:
y = regexp(cellstr(A),'\d+','match')
The output 'y' contains the numeric data as a cell array:
y =
{1x2 cell}
{1x2 cell}
Next, you can convert this cell array to a numeric one using the STR2NUM command and then work on your application without having to write out to a file or iterate through rows to use TEXTREAD or SSCANF.

Più risposte (0)

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Prodotti


Release

R2008b

Community Treasure Hunt

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

Start Hunting!

Translated by