从向量生成矩阵

时间:2016-08-16 17:56:00

标签: matlab vector

我有一个列向量A。当A是标量时,我可以使用冒号运算符生成类似的向量

B = A-m:n:A+p

然而,我想要做的是与众不同。我希望结果B看起来像这样,

[A-m, A-m+1 ... A ... , A+n-1, A+n]

我知道我可以在repmat上使用-m:n:p,然后使用原始bsxfun矩阵添加A来完成此操作。

有更直接的方法吗?

3 个答案:

答案 0 :(得分:0)

如果您只想复制少数列向量 v的实例,可以随时使用

B = [v, v, v, ... v];

行向量

B = [v ; v ; v ; ... v];

答案 1 :(得分:0)

一种简单的矢量化方式是:

NewMatrix = diag(A)*ones(length(A),m+n+1) + ones(length(A),m+n+1)*diag(-m:1:n)

答案 2 :(得分:0)

不是单行......

>> a=[1;2];
>> r=3:2:10;
>> repmat(a,1,size(r,2))+repmat(r,size(a,1),1)

ans =

     4     6     8    10
     5     7     9    11