首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在matlab中找到单元数组中两个零之间的非零数

如何在matlab中找到单元数组中两个零之间的非零数
EN

Stack Overflow用户
提问于 2016-09-06 00:30:02
回答 3查看 142关注 0票数 4

我有一个单元数组(11000x500),它有三种不同类型的元素。1)非零双精度2)零3)空单元格

我想找出所有出现在两个零之间的非零数。

例如,A = {123 13232 132 0 56 0 12 0 0 [] [] []};

我需要以下输出out = logical([0 0 0 0 1 0 1 0 0 0 0 0]);

我像这样使用cellfunisequal

代码语言:javascript
运行
复制
out = cellfun(@(c)(~isequal(c,0)), A);

并得到了以下输出

代码语言:javascript
运行
复制
out = logical([1 1 1 0 1 0 1 0 0 1 1 1]);

我需要帮助来执行下一步,我可以忽略连续的1's,只取两个0's之间的‘1’

有没有人能帮我一下?

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2016-09-06 00:59:56

您可以使用conv查找邻居为0的元素(请注意,该~已从isequal中删除):

代码语言:javascript
运行
复制
out = cellfun(@(c)(isequal(c,0)), A);      % find 0 elements
out = double(out);                         % cast to double for conv
% elements that have more than one 0 neighbor
between0 = conv(out, [1 -1 1], 'same') > 1;

between0 =

   0   0   0   0   1   0   1   0   0   0   0   0

(卷积内核已更正,以修复@TasosPapastylianou发现的错误,其中3个连续的零将导致True。)

如果你想要一个逻辑向量的话。如果需要索引,只需添加find

代码语言:javascript
运行
复制
between0 = find(conv(out, [1 -1 1], 'same') > 1);   

between0 =

   5   7
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39334577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档