使用矩阵指数创建矩阵

时间:2013-10-20 18:19:27

标签: matlab

在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(:)

但它没有按预期工作。

有关如何做到这一点的任何想法?

谢谢!

更新

我真正想要的M是:

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

3 个答案:

答案 0 :(得分:2)

您应该使用bsxfun来查找总和:

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

和第二个公式:

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

答案 1 :(得分: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

答案 2 :(得分:1)

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

这使用了Mohsen Nosratinia的答案和你希望的功能。