我有一个字符串,其中包含数千个字符,意味着其中大约有300个由空格分隔的列。其中一些列是字符字符串,大多数是整数/浮点数。问题在于,我只需要读取其中几列,例如第一列、第五列、第37列、第117列和第152列,并忽略其余的字符串。我唯一能想到的方法是在MATLAB中使用sscanf来执行以下操作:
mystring = '245 0.00000000 2456171.50000000 1030492816.000 5.14501001 1 IG 5 -1.188022 .... 5.032154 90';
params = sscanf(mystring, '%f %*f %*f %f %*f %f %*s %f %*f ... %f %*[^\n]')'];
对我来说,这似乎完全荒谬,因为如果我要读取第152列,则至少需要使用152次
%f
或%*f
。 因此,我的问题是,在MATLAB中使用sscanf最有效的方法是什么? 如果我能找到一些强大且易于更改的东西那就太棒了。 例如,如果明天我决定只需要第一列,第五列和第100列,其中我需要的总列数和列本身都已更改,则应该很容易指定。 如果太费力了,没关系。 整个字符串包含浮点数和字符串,但我需要的列始终只有浮点数/整数,MATLAB将其作为双精度返回到params
中。 预先感谢您!
repmat
来解决这个问题:['%f %*f ...' repmat('%*f') '...']
- Robert Seifert