我有一个大型数组的X和Y位置,我想用它们来定义该位置的内容。我可以运行for循环来定义位置,但我认为会有更快的方法。我试图使用数组位置定义函数。
x = [6,2,3]
y = [1,2,3]
c = [1,1,1,2,2,3;...
1,1,1,2,2,5;...
2,2,1,4,2,3;...
1,1,4,3,2,3;...
1,2,3,4,5,3;...
1,2,3,5,4,2];
当我输入上面的公式时,会得到以下答案
c(y,x)
ans =
1 2 3
1 1 1
2 2 1
我正在寻找的是数组的1:1位置。
c(y(1),x(1))
c(y(2),x(2))
c(y(3),x(3))
有没有办法将数组限制为线性序列?我现在唯一的猜测是将数组重塑为包含个体a和b的单元矩阵,然后执行一个cellfun。但我认为我让它变得复杂。
答案 0 :(得分:3)
您必须先将位置转换为线性索引,然后才能以所需的线性序列获取正确的元素。您可以使用sub2ind
来帮助您:
ind = sub2ind(size(c), y, x); % Get linear indices
v = c(ind); % Get the elements
这样做会给出:
>> v = c(ind)
v =
3 1 1
您可以自行验证每对(y,x)
为您提供了您正在寻找的正确元素。例如,当y = 1
和x = 6
时,检索到的元素是3,依此类推。