用条件初始化矩阵

时间:2020-04-13 13:33:20

标签: matlab matrix

我是MATLAB新手,需要帮助。我必须完成初始化矩阵的代码,但是我不知道从哪里开始。

矩阵必须采用以下形式: enter image description here

其中Yi = i/m代表i = 1, ..., mm=6

要完成的代码是:

m = 6;
A = [1:m;
     1:m;
     ...];

A = A/m;

2 个答案:

答案 0 :(得分:4)

您可以使用implicit expansion

m = 6;
A = ((1:m).'/m).^(0:m);

说明。首先,制作一个列向量,其值为y1ym

c = (1:m).'/6;

然后创建一个矩阵,其中第一列为c的幂为0,第二列c的幂为1,依此类推。

您可以通过隐式展开轻松地做到这一点,获取列向量,然后提高到包含0:m的行向量的幂(在元素上明智)。

A = c.^(0:m); 

答案 1 :(得分:2)

有两种方法:

  • 使用vander + fliplr
A = fliplr(vander((1:m)/m));
  • 使用arrayfun + vertcat
C = arrayfun(@(x) x.^(0:m),(1:m)/m, 'UniformOutput', false);
A = vertcat(C{:});

结果

>> A
A =

   1.000000000   0.166666667   0.027777778   0.004629630   0.000771605   0.000128601   0.000021433
   1.000000000   0.333333333   0.111111111   0.037037037   0.012345679   0.004115226   0.001371742
   1.000000000   0.500000000   0.250000000   0.125000000   0.062500000   0.031250000   0.015625000
   1.000000000   0.666666667   0.444444444   0.296296296   0.197530864   0.131687243   0.087791495
   1.000000000   0.833333333   0.694444444   0.578703704   0.482253086   0.401877572   0.334897977
   1.000000000   1.000000000   1.000000000   1.000000000   1.000000000   1.000000000   1.000000000