【问题标题】:Matlab filter cellarray?Matlab过滤单元阵列?
【发布时间】:2016-03-05 08:17:57
【问题描述】:

我的 cellarray 有以下输出。

 a = {'100.000000', '23.860477', '23.924062', '41.759920', '46.911883', '48.074160'};

我想使用 cellfun 函数过滤这个数组,条件是如果值大于 75 将保留,其余部分将被剥离

【问题讨论】:

  • 你有没有尝试过?如果是这样,请向我们展示,以便我们可以比给您代码更好地为您提供帮助。谢谢!
  • 是的,我试过下面的代码:a= cellfun(@(x)(x>=75),a);但以下数组发生错误在统一输出中使用 cellfun 非标量,在索引 1,输出 1。将“UniformOutput”设置为 false。我还检查了我的变量的类类型,它说“细胞”
  • 您需要将单元格的内容保留为字符串还是可以将它们转换为数字数据类型?
  • 是的,不需要它的剩余字符串......可以转换为数字数据类型......
  • 我建议使用str2double,然后使用Amro's answer to this similar question

标签: matlab sorting filtering


【解决方案1】:

这真的很琐碎,但我没有找到给出一个非常严格的答案的重复项,所以我可能就写在这里了。

Indexes = find(arrayfun(@(idx) str2double(YourCell{idx}) > 75, 1:size(YourCell,2)));

或者我认为这样做可能更容易+更快:

T = str2double(YourCell);
Indexes = find(T > 75);

索引应该允许您使用vertcathorzcat 创建矩阵或单元格,以创建所需的新单元格/矩阵。

YourCell = {'1' '2' '3' '56' '76' '87'}

Indexes =

 5     6

【讨论】:

  • @excaza 没错,我犯了一个错误,因为我身边没有 Matlab 应用程序,我只是回答并忘记了。我已经修复了 size(YourCell,1) 的另一个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多