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

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by ZK on 9 Jan 2013

Hi, I have to add to creating program a complicated database from other file with united numbers sometimes with no space between them. Which formula should I use to load from random line in data document, and isolate them to other calculations.

Example 1.543 345.1200 1.32399.0099.00 1.3399.00

Thank you.

*No products are associated with this question.*

Answer by Walter Roberson on 9 Jan 2013

Accepted answer

NumericLine = str2double( regexp( regexprep(TheLine, '99\.0', ' &'), '\s+', 'split') );

ZK on 10 Jan 2013

Thank You, You were very helpful, I check it. Can I work with this formula when I have whole database loaded with fopen and fscanf with numbers characters and words?

Walter Roberson on 10 Jan 2013

You would need to have scanned the line as a string, so you might as well fgetl() instead of fscanf()

## 4 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/58333#comment_121644

And what is the expected result? Is this 1.543, 345.12... or 1.5, 43, 34, 5.12, 00 ? Is there any chance that we can guess this

reliably?Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/58333#comment_121680

Yes of course is always the same value 99.00

So expected values are 1.543 345.1200 1.323 99.00 99.00 1.33 99.00

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/58333#comment_121681

Unless you have some further information about the values of the numbers (e.g., always > 10) or the format (e.g., number of significant digits) you cannot retrieve the original numbers, because you can cut a chunk of digits at any positions other than those just before and after a . that would leave you with this single '.', which is not a number.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/58333#comment_121686

Thorsten like I said I have this value. It always looks like there is no space before 99.00