【发布时间】:2018-07-17 01:53:58
【问题描述】:
所以我有这 4 个大小相同的矩阵:
k = [0.5; 1.0; 1.5; 2.0];
l = [2; 4; 6; 8];
m = [1.7; 3.0; 4.5; 6.0];
n = [2.5; 5.0; 7.5; 10.0];
我想将每个矩阵中的元素放入零矩阵的对角线,所以它会创建这样的东西:
f = 0.5 2.0 0 0 0 0 0 0
1.7 2.5 0 0 0 0 0 0
0 0 1.0 4.0 0 0 0 0
0 0 3.0 5.0 0 0 0 0
0 0 0 0 1.5 6.0 0 0
0 0 0 0 4.5 7.5 0 0
0 0 0 0 0 0 2.0 8.0
0 0 0 0 0 0 6.0 10.0
这是我想出的:
f = zeros(8,8);
k = [0.5; 1.0; 1.5; 2.0];
l = [2; 4; 6; 8];
m = [1.7; 3.0; 4.5; 6.0];
n = [2.5; 5.0; 7.5; 10.0];
for i = 1:2:8 %odd index number
for j = 2:2:8 %even index number
f(i,i) = k(1,i)
f(i,j) = l(1,i)
f(j,i) = m(1,i)
f(j,j) = n(i,1)
end;
end;
disp(f)
但是结果没有把元素放到矩阵f=zero(8,8)的对角线上,一直报Index exceeds matrix dimensions.的错误
我能得到一些关于如何修复此代码的指示吗?
【问题讨论】:
-
与您的问题无关,但我仍然想指出这一点。
k、l、m和n是向量(一维数组)。您只需指定一个索引即可访问该值,即k(i)而不是k(1,i)。 -
除了@anthony 所说的:
k(1,i)超出范围,因为它是列向量,第一个索引是行号。请改用k(i,1)。但这只是作为学习索引的练习。k(i)更简单、更惯用。