Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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 求向量化矩阵的对应坐标_Arrays_Matlab_Math_Matrix - Fatal编程技术网

Arrays 求向量化矩阵的对应坐标

Arrays 求向量化矩阵的对应坐标,arrays,matlab,math,matrix,Arrays,Matlab,Math,Matrix,我有一个矩阵X,大小nxm。我将X调整为长度nxm的向量a 如何“自动”知道向量a中的ith元素对应于X中的哪个元素位置(坐标) 我已经写了下面的MATLAB代码,但我不知道如何继续 X = rand(10,10); [n,m] = size(X); a = reshape(X, [n*m, 1]); t = zeros(length(a),1); for i = 1 : length(a) t(i) = % I want to perform here the sum over th

我有一个矩阵X,大小
nxm
。我将X调整为长度
nxm
的向量a

如何“自动”知道向量a中的
ith
元素对应于X中的哪个元素位置(坐标)

我已经写了下面的MATLAB代码,但我不知道如何继续

X = rand(10,10);
[n,m] = size(X);
a = reshape(X, [n*m, 1]);
t = zeros(length(a),1);

for i = 1 : length(a)
    t(i) = % I want to perform here the sum over the x and y coordinate values of the element in X 
             % that corresponds to the ith element in vector a.
end
任何帮助都将不胜感激。

这就是我们所做的:

但是,您可能更喜欢手动执行此操作:

row = mod(i-1,m)+1;
col = floor((i-1)/m)+1;
这是因为Matlab用于存储数组元素。例如,在3×4矩阵中,元素存储在内存中的顺序如下:

 1     4     7    10
 2     5     8    11
 3     6     9    12

所以第二行第三列中的条目是第八个元素(主要列)的线性顺序。当该矩阵被重塑为向量(或任何其他形状)时,该线性顺序保持不变。因此,可以通过分割和模运算检索原始坐标。还要注意的是,由于Matlab的索引是基于1的(而不是基于0的),因此模运算需要移动1。

为了手动执行,您是如何从数学角度进行思考的?我只是在回答的最后给出了一个解释。现在更清楚了吗?你认为col应该是地板(i-1,m)+1吗?@Christina真的!对不起,弄错了。我已经在回答中更正了,你好!我问了一个新问题,这个问题继续你的回答。我在寻找你的帮助!非常感谢。我的新问题在这里
 1     4     7    10
 2     5     8    11
 3     6     9    12