【发布时间】:2015-01-19 14:51:55
【问题描述】:
我有一个 n 维数组,并且我在所有其他维度上的某个位置有一个沿一个维度的序列。我如何找到这个序列的位置?最好不要循环。
我使用matlab。我知道它应该在哪个维度,但序列不一定在那里。查找和 == 不起作用。我可以使用互相关创建一个 nd find 函数,但我猜这已经实现了,我只是不知道要调用什么函数。
示例:
ND = rand(10,10,10,10);
V = ND(randi(10),randi(10),randi(10),:);
[I1, I2, I3] = find(ND==V);
编辑:要找到的序列跨越了它所在的整个维度,我在最初的问题表述中没有提到这一点。 Knedlsepp 的解决方案正好解决了我遇到的问题,但 Luis 的解决方案解决了一个更普遍的问题,即序列不一定跨越整个维度。
【问题讨论】:
-
您是否尝试过相关性?我想您可以将序列与矩阵相关联,并且具有最高 corr 的点(如果它完全等于 corr = 1)将是您想要的那个。这样,您将能够查看序列是否在不同的地方也重复。
-
您是否已经知道您正在查看哪个维度(例如,在您给出的示例中,您知道要查看第三个维度吗?)
-
是的,我知道尺寸
-
有点跑题了,但你应该使用
randi(10)而不是round(10*rand)。因为第一个将产生从 0 到 10 的整数。 -
图案有没有可能没有出现一次?例如:
ND = [1 2 1 2; 3 4 5 6]、V = [1 2],沿第二个暗角搜索
标签: matlab multidimensional-array find