我试图在特定索引处插入一个值到另一个矢量中指定的矢量,然后相应地替换其他值。在matlab矢量或矩阵的特定点处插入值
E.g.
Vector=[1 2 3 4 5] %vector of data
Idx=[2 4] %Indices at which to insert a value
Value to insert is X
NewVector=[1 X 2 X 3 4 5]
有一些简单的方法来做到这一点,最好避免循环?
我试图在特定索引处插入一个值到另一个矢量中指定的矢量,然后相应地替换其他值。在matlab矢量或矩阵的特定点处插入值
E.g.
Vector=[1 2 3 4 5] %vector of data
Idx=[2 4] %Indices at which to insert a value
Value to insert is X
NewVector=[1 X 2 X 3 4 5]
有一些简单的方法来做到这一点,最好避免循环?
Vector=1:5;
Idx=[2 4];
c=false(1,length(Vector)+length(Idx));
c(Idx)=true;
result=nan(size(c));
result(~c)=Vector;
result(c)=42
result =
1 42 2 42 3 4 5
如果你想插在你的评论已删除,新的值,这样做:
c(Idx+(0:length(Idx)-1))=true;
非常感谢您的帮助! – CHP 2012-07-15 16:28:48
这是一个通用功能。这个想法是相同的@马克说:
function arrOut = insertAt(arr,val,index)
assert(index<= numel(arr)+1);
assert(index>=1);
if index == numel(arr)+1
arrOut = [arr val];
else
arrOut = [arr(1:index-1) val arr(index:end)];
end
end
我从来没有听说过这个内置函数。
在这个版本的问题,新的值在'[2〜5]'即使你指定的'[2 4]' – tmpearce 2012-07-15 16:18:10
其实你是对的,位置是相对于最终矢量,而不是我想象的初始矢量。 – CHP 2012-07-15 16:23:53