对于具有一个变量m的循环矩阵

时间:2017-03-19 14:15:29

标签: matlab matrix

我对带有一个变量m的循环矩阵有问题。 如何用for循环解决这个矩阵?

[1 1/2 ... 1 / m + 1,1 / 2 1/3 ... 1 / m + 2,... ......,1 / m + 1 1 / m +2 ... 1 / 2m + 1]

2 个答案:

答案 0 :(得分:1)

感谢@Sardar Usama为我提供了一个站点来验证我的代码,而无需在我自己的计算机上运行Matlab。

示例代码:

m1 = repelem(1:m+1,m+1);
m2 = repmat(0:m,1,m+1);
m3 = m1+m2;
mmatrix = 1./m3;
msum = sum(mmatrix);
mmean = mean(mmatrix);
% mwhatever = whatever(mmatrix)

如果您的Matlab版本中没有repelem,请将repelem的行替换为以下

m1 = repmat(1:m+1,m+1,1);
m1 = reshape(m1,1,[]);

m=5

的示例输出
m3 =

 Columns 1 through 16:

    1    2    3    4    5    6    2    3    4    5    6    7    3    4    5    6

 Columns 17 through 32:

    7    8    4    5    6    7    8    9    5    6    7    8    9   10    6    7

 Columns 33 through 36:

    8    9   10   11

mmatrix =

 Columns 1 through 7:

   1.000000   0.500000   0.333333   0.250000   0.200000   0.166667   0.500000

 Columns 8 through 14:

   0.333333   0.250000   0.200000   0.166667   0.142857   0.333333   0.250000

 Columns 15 through 21:

   0.200000   0.166667   0.142857   0.125000   0.250000   0.200000   0.166667

 Columns 22 through 28:

   0.142857   0.125000   0.111111   0.200000   0.166667   0.142857   0.125000

 Columns 29 through 35:

   0.111111   0.100000   0.166667   0.142857   0.125000   0.111111   0.100000

 Column 36:

   0.090909

mmean =  0.21774

答案 1 :(得分:1)

在MATLAB r2016b或Octave中你可以写:

1./reshape((1:m+1).'+(0:m),1,[])

在以前的版本中,你可以这样做:

1./reshape(bsxfun(@plus, (1:m+1).', 0:m), 1, [])