Matlab 存储在矩阵单元中的未知大小的数组如何求交?

Matlab 存储在矩阵单元中的未知大小的数组如何求交?,matlab,cell,Matlab,Cell,我有一个细胞矩阵,叫做M,矩阵的维数是n^3 每个单元格都包含一个索引数组(某个字符串的regexp查询结果,这并不重要) 我想让M的每个单元格中的数组中的索引相交 我该怎么做?如果我使用交集函数,它如何知道从每个单元格的数组中获取索引 据我所知,我必须使用单元格,因为内部数组的大小未知。这就是您想要做的吗 A = M{1}; for i = 2:numel(M) A = intersect(A, M{i}); end 我不认为有一个简单的方法可以使用一个intersect调用,或者使用例

我有一个细胞矩阵,叫做M,矩阵的维数是n^3

每个单元格都包含一个索引数组(某个字符串的regexp查询结果,这并不重要)

我想让M的每个单元格中的数组中的索引相交

我该怎么做?如果我使用交集函数,它如何知道从每个单元格的数组中获取索引


据我所知,我必须使用单元格,因为内部数组的大小未知。

这就是您想要做的吗

A = M{1};
for i = 2:numel(M)
  A = intersect(A, M{i});
end
我不认为有一个简单的方法可以使用一个
intersect
调用,或者使用例如
cellfun

如果只需要特定索引的交点,可以执行以下操作:

A = indices(1);
for i = indices(2:end)
  A = intersect(A, M{i});
end

我不知道你可以用那样的花括号(
M{index}
)。这就是我需要的。谢谢对代码的改进是
result=intersect(A{required\u cells})
。其中,
required\u cells
是一个从1到矩阵中元素数量的数字数组。如果required\u cells有2个以上的元素,我认为
intersect(A{required\u cells})
不起作用。我认为调用这样的函数只是将单元格作为输入参数分布在数组中,而
intersect
只需要两个数组参数。当我尝试类似于
intersect(A{[1234]})
的方法时,它给了我一个“输入参数太多”的错误。