创建矩阵时,出现“索引超出矩阵尺寸”的错误
问题描述:
我想用每个矢量创建矩阵V,但是我得到此错误索引超出矩阵尺寸。我不明白为什么这不应该工作,我错过了什么?创建矩阵时,出现“索引超出矩阵尺寸”的错误
x1=[1 2 3];
x2=[1 4 3];
x3=[1 5 3];
x4=[1 6 3];
x=[];
V=[];
for i=1:1:4
V=[ones(size(x(i))) x(i)]
end
v =
[]
V =
[]
Index exceeds matrix dimensions.
答
你想完成什么?
在您的for-loop中,您的索引从1变为4。但是,您尝试访问x(i),其中x是一个空数组。因此,在第一次迭代中(i = 1),您正在访问未定义的x(1)。这会导致索引超出范围错误。
同样对于使用的那些()函数,你应该由逗号分隔的输入参数: ones(size(x(i)), x(i))
代码示例
x = [1 2 3; 1 4 3; 1 5 3; 1 6 3];
V = zeros(size(x, 1), 1); % initialize V
for i = 1:1:size(x, 1)
V(i) = x(i, 1);
end
此示例返回从各行的第一元素的向量你的矩阵x。
V = [1; 1; 1; 1]
我想创建每个向量看起来像矩阵这样 V = 1 1 1 1 2 3,并在循环,使 所以是应该得到进入X1,X2,X3,X4 所以我应该是索引,这就是为什么我这样写它x(i) –
啊,我明白了。问题是x(i)访问变量x的元素。如果你想迭代不同的向量,我建议你构造一个矩阵'x = [x1; X2; X3; x4]'并用'for i = 1:1:4'遍历它的行'x(i,:)'。 – imant
有道理,非常感谢你 –