Matlab中矢量到矢量的复制

Matlab中矢量到矢量的复制,matlab,vector,Matlab,Vector,我有一个简单的问题,关于如何将一个向量复制到另一个向量。我有一个长度为66x1的向量,然后是另一个长度为2151x1的向量。我想将第一个的值复制到另一个的精确位置。我试过了,但没用 inter=66x1 out=2151x1 for i=1:numel(inter) out(101:167)= inter(i) end 我也试过这个: for inter=(1:66); out(101:167)=inter; end 这是: for k= (101:167) out

我有一个简单的问题,关于如何将一个向量复制到另一个向量。我有一个长度为66x1的向量,然后是另一个长度为2151x1的向量。我想将第一个的值复制到另一个的精确位置。我试过了,但没用

inter=66x1 out=2151x1

for i=1:numel(inter)
    out(101:167)= inter(i)
end
我也试过这个:

for inter=(1:66);
    out(101:167)=inter;
end 
这是:

for k= (101:167)
    out(k)=inter(1:66);
end

我做错了吗?提前感谢,

假设你的向量是

a = [1; 2; 3];
b = [4; 5; 6; 7; 8; 9];
为了简单起见

不需要使用循环。你可以这样做:

startIdx = 2; %101 in your case
finalIdx = startIdx + size(a,1) - 1; % 166 in your case
b(startIdx:finalIdx) = a; 
那么b将是:

b =

     4
     1
     2
     3
     8
     9


这里非常重要的一点是
finalIdx
中的
-1
。您需要从最终索引中减去1。

假设向量为

a = [1; 2; 3];
b = [4; 5; 6; 7; 8; 9];
为了简单起见

不需要使用循环。你可以这样做:

startIdx = 2; %101 in your case
finalIdx = startIdx + size(a,1) - 1; % 166 in your case
b(startIdx:finalIdx) = a; 
那么b将是:

b =

     4
     1
     2
     3
     8
     9


这里非常重要的一点是
finalIdx
中的
-1
。您需要从最终索引中减去1。

您的问题是对for循环的误解。for行中的变量只是一个数字(=1x1矩阵)-而在循环中,您重复将其分配给向量(66x1矩阵)。您的问题是对for循环的误解。for行中的变量只是一个数字(=1x1矩阵)-而在循环中,您可以重复将其分配给向量(66x1矩阵)。或者只执行
out(101:166)=inter
:-)或只执行
out(101:166)=inter
:-)