Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MATLAB实现多个向量的所有可能交点_Matlab_Vector_Set Intersection - Fatal编程技术网

使用MATLAB实现多个向量的所有可能交点

使用MATLAB实现多个向量的所有可能交点,matlab,vector,set-intersection,Matlab,Vector,Set Intersection,我有一组向量Ai,使得I=1…N;其中N可以非常大,d向量包含除0以外的整数。所有向量的长度都相同,这很好。我需要一个输出为单元数组C(数据类不一定是单元btw)的函数,这样C索引实际上是向量元素,单元内容是共享内容的向量的I索引 F:Ai-->C 例如: A1 = [1 2 4], A2 = [3 4 5], A3 = [4 1 2] 得到的C应该是 C{1} = [1 3]; C{2} = [1 3]; C{3} = [2]; C{4} = [1 2 3]; C{5} = [2];

我有一组向量Ai,使得I=1…N;其中N可以非常大,d向量包含除0以外的整数。所有向量的长度都相同,这很好。我需要一个输出为单元数组C(数据类不一定是单元btw)的函数,这样C索引实际上是向量元素,单元内容是共享内容的向量的I索引

F:Ai-->C

例如:

A1 = [1 2 4], 
A2 = [3 4 5], 
A3 = [4 1 2]
得到的C应该是

C{1} = [1 3];
C{2} = [1 3];
C{3} = [2];
C{4} = [1 2 3];
C{5} = [2];

当然,我希望避免元素级for循环。

我不确定是否正确理解了您的目标,但我认为这将使您在大多数情况下达到目标:

使用第一个向量中的1个元素、第二个向量中的1个元素和第三个向量中的1个元素创建所有组合

[X,Y,Z] = ndgrid([1 2 3 4 5], [3 4 5 6 7], [4 8 9 11 2])
[X(:) Y(:) Z(:)]
知道了这一点,就不难弄清楚如何获得2个向量之间的所有组合。然后添加所有单个元素应该很简单


您可能希望将其排序到第二个维度,并获取所有
唯一的
值。

我第一次误解了,我相信现在这是正确的:

A = [1 2 4
     3 4 5
     4 1 2];


Av = num2cell(unique(A(:))', 1);
C = cellfun(@(x)(find(any((A == x)'))), Av, 'UniformOutput', false)
导致

C{1} = [1 3];
C{2} = [1 3];
C{3} = [2];
C{4} = [1 2 3];
C{5} = [2];

你已经很清楚地描述了你的问题。SO社区现在希望您展示代码并提出问题。你两个都没做。我需要一个函数不是问题,问题是我没有任何代码。我只有那个输入数组,我的问题是如何在函数中实现它。我不期望我能使用一个准备好的函数。一个提示甚至可以帮到我。我认为提问者实际上不是在寻找交叉点,而是在寻找组合。是的,也许标题应该是
向量空间中哪些元素由哪些向量共享?
或类似的smth。@bop你能更清楚地解释你得到的
C
应该是什么吗?也许可以减小示例
A
s的大小,并给出
C
的完整输出?这将非常占用内存,对吗?我有100-1000个1 x 8向量,向量空间为200-10000个元素。@bop向量化解决方案通常会消耗更多内存以提高速度。然而,不管采用哪种方法,我认为您的输出规模将是巨大的,因此如果您想同时获得所有组合,您可能会遇到任何一种方法的问题。如果您不需要同时使用它们,那么循环可能是占用内存最少的。