Matlab 创建矩阵时,我得到的错误是;索引超出了矩阵维度”;

Matlab 创建矩阵时,我得到的错误是;索引超出了矩阵维度”;,matlab,matrix,Matlab,Matrix,我想用每个向量创建一个矩阵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循环

我想用每个向量创建一个矩阵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循环中,索引i从1变为4(包括1)。然而,您尝试访问x(i),其中x是一个空数组。因此,在第一次迭代(i=1)中,您正在访问未定义的x(1)。这将导致索引越界错误

使用one()函数时,还应使用逗号分隔输入参数:
one(尺寸(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=123,所以循环中的is应该可以访问x1,x2,x3,x4,所以我应该是索引,这就是为什么我这样写x(I)Ahh,我明白了。问题是x(i)访问变量x的元素。如果你想迭代不同的向量,我建议你构造一个矩阵
x=[x1;x2;x3;x4]
,然后用
迭代它的行
x(I,:)
,因为I=1:1:4
。不客气!我在代码中添加了一个示例。如果我的回答对您有帮助,请务必接受:)我已经接受了,但我想知道如何保存此循环的所有输出,因为即使您已经编写了V(I)。。它只保存一个矢量,这取决于您的输出应该是什么。在您的代码中,在每次迭代中覆盖V。如果您想持久保存它,您可以迭代地填写一个矩阵,并预先初始化,就像我在示例中所做的那样。