Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
Arrays 两个数组(X,Y)的Matlab矩阵索引_Arrays_Matlab_Indexing - Fatal编程技术网

Arrays 两个数组(X,Y)的Matlab矩阵索引

Arrays 两个数组(X,Y)的Matlab矩阵索引,arrays,matlab,indexing,Arrays,Matlab,Indexing,我有一个大数组的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)

我有一个大数组的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。但是我认为我把它弄得很复杂。

你必须先将位置转换成线性索引,然后才能在所需的线性序列中获取正确的元素。您可以使用来帮助您做到这一点:

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,依此类推。

使用
x
y
作为线性索引,通过列的长度-
c(大小(c,1)*(x-1)+y)
@Hojo.Timberwolf作为进一步阅读,这就是为什么结果是矩阵而不是线性序列的原因:。为矩阵的行和列指定数组时,它将查找相交的行和列,并返回该矩阵的子集。有关更多详细信息,请查看帖子。对于post,这就是为什么需要将每对行和列坐标转换为单个线性索引。这样,您就可以提取单个元素,而不是矩阵的子集。