我有一个大小为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。