所以我有这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
是向量(1D数组)。您只需要指定一个索引来访问该值,即k(i)
而不是k(1,i)
。 - Anthonyk(1,i)
越界,因为它是一个列向量,第一个索引是行号。请尝试使用k(i,1)
。但是,作为学习索引的练习,k(i)
更简单、更惯用。 - Cris Luengo