I always have needs to find numbers from a formatted string using Matlab. For example, find the lats and longs for all the grid cells of a river basin based on a bunch of input files, something like `forcings_35.25_-100.75`

. Then in Matlab you have two ways to read these numbers out.

using ‘sscanf’. It’s kinda stupid that you can’t find the two numbers by

```
sscanf('forcings_35.25_-100.75','%s_%f_%f')
```

instead, you will get an 1d array that contains 22 numbers, with each number representing a single character in that string. What you need to do is using

```
sscanf('forcings_35.25_-100.75','forcings_%f_%f')
```

I guess the reason behind this is that sscanf can only output one numerical matrix that based on the first character it processes. So if you do

```
sscanf('35.25_-100.75_forcings','%f_%f_%s')
```

you will get the first two number you want, followed by 8 numbers representing the string “forcings”.

Another way is to use “textscan”. I feel safer using this method.

```
A = textscan('forcings_35.25_-100.75','%s %f %f', 'Delimiter', '_')
```

This way, you will end up getting a three cell array representing the three parts separated by “_” in the string. Then simply using cell2mat() to convert the numbers to regular array. To convert “forcings” to string, using

```
char(A{1})
```