Fix*_*int 3 string matlab scanf
我有一个数千个字符的字符串,这意味着它中有大约300列用空格分隔.有些列是字符串,大多数是整数/浮点数.问题是我只需要读取一些列,例如第一列,第5列,第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]')'];
Run Code Online (Sandbox Code Playgroud)
这似乎是完全荒谬的我,因为我需要%f或%*f至少152倍,如果我想在第152列阅读.所以我的问题是在MATLAB中使用sscanf最有效的方法是什么?如果我能找到一些强大且易于改变的东西,那就太棒了.例如,如果明天我决定我只需要第一列,第五列和第100列,其中我需要的列总数和列本身已经更改,那么应该很容易指定.如果工作太多,不用担心.任何招数?
整个字符串有浮点数和字符串混合,但我需要的列总是只有浮点数/整数,MATLAB返回params为双精度数.提前致谢!
您可以使用strsplit拆分字符串然后访问您感兴趣的数组元素.
mystring = '245 0.00000000 2456171.50000000 1030492816.000 5.14501001 1 IG 5 -1.188022 .... 5.032154 90';
split = strsplit(mystring);
Run Code Online (Sandbox Code Playgroud)
如果您的MATLAB版本太旧而且strsplit未包含在内,那么可以从MATLAB中心下载它.
然后你可以使用str2num或str2double将你感兴趣的每个字符串变成一个数字.
col5 = str2double(split(5));
% or
mycols = str2double(split([5 37 117]));
Run Code Online (Sandbox Code Playgroud)
strsplit引用
str2num引用
str2double引用
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |