MATLAB 中元胞数组的交集

发布于 2024-10-23 19:25:03 字数 301 浏览 6 评论 0原文

我需要确定数组单元格中所有单元格的交集。我使用这样的命令:

temp(j-1)={6 7 8 9 10};
temp(j)= {8 9 10};

inter =  cellfun(@intersect,temp(j-1),temp(j),'UniformOutput', false)  ;  

在输出中我得到:

inter={0189}

我应该做什么才能得到 {8 9 10}?

我必须使用 inter 作为另一个矩阵中的索引向量。

I need to determine intersection of all cells in array cell. I use a command like this:

temp(j-1)={6 7 8 9 10};
temp(j)= {8 9 10};

inter =  cellfun(@intersect,temp(j-1),temp(j),'UniformOutput', false)  ;  

In the output I get:

inter={0189}

What should I do to get {8 9 10}?

I have to use inter as a vector of indexes in another matrix.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自演自醉 2024-10-30 19:25:03

我可以看到您会得到类似 inter={0189} 的唯一方法是,事实上,您实际上得到了 inter=' 0189' 因为您的单元格包含字符串。如果是这样,您可以像这样进行交集:

>> temp = {'6 7 8 9 10' '8 9 10'}

temp = 

    '6 7 8 9 10'    '8 9 10'

>> inter = intersect(str2num(temp{1}), str2num(temp{2}))

inter =

     8     9    10

但我不得不问,为什么不将数据存储在数字向量而不是字符串中?

The only way I can see that you would get something like inter={0189} is if, in fact, you are actually getting inter=' 0189' because your cells contain strings. If this is so, you can instead do the intersection like this:

>> temp = {'6 7 8 9 10' '8 9 10'}

temp = 

    '6 7 8 9 10'    '8 9 10'

>> inter = intersect(str2num(temp{1}), str2num(temp{2}))

inter =

     8     9    10

I have to ask though, why not store your data in numerical vectors instead of strings?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文