在矩阵中的每个元素后面添加固定数量的增加值

时间:2014-07-04 11:50:06

标签: matlab

在Matlab中,我有一个数字列表A(向量),并且需要在每个条目之后添加一个n个附加条目,其值比前一个高1

所以假设我有A=[5 11 17],n = 1,我需要让结果表达式包含[5 6 11 12 17 18]

我该怎么做?我见过repmat和Tony's Trick,但他们只复制了一个向量,并没有向值添加任何东西。我可以在Matrix上应用任何表达式,例如:行索引是否添加到每个元素的值?

请原谅我,如果这真的是一个简单的任务,我是Matlab的新手,并没有把我的脑袋包围在那里但我觉得......很高兴任何指针!

2 个答案:

答案 0 :(得分:3)

使用bsxfun进行二维添加,然后将reshape添加到一行:

B = reshape(bsxfun(@plus, A, (0:n).'), 1, []); %'// A assumed to be a row vector

示例:

>> A = [5 11 17];
>> n = 2;
>> B = reshape(bsxfun(@plus, A, (0:n).'), 1, [])
B =
     5     6     7    11    12    13    17    18    19

答案 1 :(得分:1)

在此期间我自己找到了解决方案。不确定它是否有效,但我想我还是会发布它:

result = repmat(A, n-1, 1)+repmat([1:n-1]-1,length(A),1).'
result = result(:)