Arrays 求向量化矩阵的对应坐标
我有一个矩阵X,大小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
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