我对带有一个变量m的循环矩阵有问题。 如何用for循环解决这个矩阵?
[1 1/2 ... 1 / m + 1,1 / 2 1/3 ... 1 / m + 2,... ......,1 / m + 1 1 / m +2 ... 1 / 2m + 1]
答案 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, [])