~1 min read


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


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


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


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