我是MATLAB新手,需要帮助。我必须完成初始化矩阵的代码,但是我不知道从哪里开始。
其中Yi = i/m
代表i = 1, ..., m
,m=6
。
要完成的代码是:
m = 6;
A = [1:m;
1:m;
...];
A = A/m;
答案 0 :(得分:4)
您可以使用implicit expansion。
m = 6;
A = ((1:m).'/m).^(0:m);
说明。首先,制作一个列向量,其值为y1
至ym
。
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