小编Fix*_*int的帖子

在MATLAB中有效地使用sscanf

我有一个数千个字符的字符串,这意味着它中有大约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为双精度数.提前致谢!

string matlab scanf

3
推荐指数
1
解决办法
1377
查看次数

检查整数序列以查看它是否为非递减

我有一个向量,一个由MATLAB中的整数组成的非常长的向量.我的问题是什么是一种快速有效的方法来检查在MATLAB中该向量是否不减少?向量有几千个元素,都是正整数.向量以一些正整数开始,重复几十次,然后应该递增1并重复.例如,矢量应该看起来像

a = [5 5 5 5 6 6 6 6 6 6 6 7 7 8 8 9 9 9 10 10 10 10 11];
Run Code Online (Sandbox Code Playgroud)

问题是,我们怀疑计数器可能偶尔搞砸了,所以计数器偶尔减少然后增加,就像这样

b = [5 5 5 5 6 6 6 7 7 6 6 7 7 8 8 9 9 9 10 11 10 10 11];
Run Code Online (Sandbox Code Playgroud)

所以首先我需要看看序列是否不减少.然后,如果它确实减少了,那么知道序列减少的所有索引会更好.我只能想到使用第一个差异并检查所有条目是零还是一个.还有其他聪明的想法吗?

谢谢.

matlab vector

1
推荐指数
2
解决办法
641
查看次数

标签 统计

matlab ×2

scanf ×1

string ×1

vector ×1