获取矢量化矩阵的相应坐标



我有一个大小为n x m的矩阵X。我将X的大小调整为长度为n x m的向量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

任何帮助都将不胜感激。

ind2sub就是这样做的:

[row, col] = ind2sub([m n], i);

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

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

因此,第2行第3列中的条目是(主列(线性顺序中的第8个元素。当这个矩阵被重新成形为向量(或任何其他形状(时,这个线性顺序被保留。因此,可以通过除法和模数运算检索原始坐标。还要注意,由于Matlab的索引是基于1的(而不是基于0的(,因此模数运算需要偏移1。

相关内容

  • 没有找到相关文章