2013-10-20 302 views
3

在matlab中,如何使用其索引創建矩陣M來填充值?例如,假設我想創建一個3x3矩陣M這樣使用矩陣索引創建矩陣

M(i,j) = i+j --> [ 2 3 4; 3 4 5; 4 5 6] 

我試圖使載體:x = 1:3'y = 1:3然後

M = x(:) + y(:) 

但預計它沒有工作。

有關如何做到這一點的任何想法?

謝謝!

UPDATE

M其實我的願望是:

M(i,j) = -2^(-i - j). 

回答

2

一種方法是

x = 1:3; 
z = ones(1,3); 
N = z'*x + x'*z 
M = -2 .^ -(z'*x + x'*z) 
% Or simply 
% M = -2 .^ -N 

輸出:

N = 

    2 3 4 
    3 4 5 
    4 5 6 

M = 

    -0.250000 -0.125000 -0.062500 
    -0.125000 -0.062500 -0.031250 
    -0.062500 -0.031250 -0.015625 
+0

謝謝,很好的方式來做到這一點! – jon

2

您應該使用bsxfun找到總和:

M=bsxfun(@plus, (1:3).', 1:3) 

,並在第二個公式:

M=-2.^(-bsxfun(@plus, (1:3).', 1:3)) 
+0

謝謝,看起來像我需要的東西。我實際需要的函數是-2 ^( - i - j),我找不到使用@power的例子。你能證明在這種情況下如何使用它嗎? – jon

+0

然後,您可以在原始答案中使用'M。'來使用'-2。^( - M)'。 –

1

bsxfun(@(x,y)(-2.^(-x-y)), (1:3).', 1:3)

這使用穆赫辛Nosratinia與你希望的功能應答。