2014-04-01 133 views
0

假設我有一個名爲A的矩陣。 矩陣的值代表座標, 因此第2行和第3列是2D平面中的座標(2,3)。在MATLAB中映射矩陣的值

我怎麼能矩陣的不同指數的所有值映射,使(0,0)將得到的0等映射值?

(0,0) -> 0 
(0,1) -> 1 
(0,2) ->2 
.. 
.. 

等等。

謝謝。

+0

MATLAB沒有'0'作爲索引。 – Divakar

回答

1

假設你是好與從1開始的MATLAB索引,這樣的工作 -

A1 = reshape([1:numel(A)],size(A,1),[])' 

如果你想從0開始的映射,只是減去1 -

A1 = reshape([1:numel(A)],size(A,1),[])' -1 
1

sub2ind命令確定對應於一組下標值的等效單索引」。

例如,如果

i = sub2ind(size(A), 2, 3); 

然後

A(2,3)A(i)和指代相同的元件以矩陣A

1

在MATLAB中,你可以index matrices linearly。假設有矩陣:現在

a =  
    16 2 3 13 
    5 11 10 8 
    9 7 6 12 
    4 14 15 1 

,可以在(3,2)位置訪問該元素或者使用正常標,或使用線性等效。

a(3,2) 
ans = 7 

a(7) 
ans = 7 

假設你有你的指數從1到numel(a)名單,並不真正需要(3,2)(7)之間的聯繫,這將是做到這一點的最簡單方法。

正如您所述,您希望位置(0,0)中的元素具有索引(0)。由於MATLAB索引開始於1你有兩種選擇:

如果你得到一個列表(例如從另一個程序),其中的元素是從零列出(numel(a) - 1),如ind = [0, 3, 6, 8],我的建議是你根本ind = ind + 1(或ind_1 = ind + 1如果你不想覆蓋原來的矢量

否則,你可以每次添加一個這樣說:x = a(ind + 1);

但是,如果你真的想(3,2)(7)之間的紐帶,我相信sub2ind是要走的路。