使用模式在MATLAB中创建向量

时间:2010-12-30 11:33:18

标签: math matlab vector

如何创建这样的矢量:

a = [a_1;a_2;...,a_n]; 
aNew = [a;a.^2;a.^3;...;a.^T].

是否可以在没有循环的情况下创建一个新的?

2 个答案:

答案 0 :(得分:7)

所以你想要一个不同的权力,所有的东西都串成一个向量?我会创建一个数组,其中数组的每一列都是a的不同幂。然后将其串入一个向量。像这样......

aNew = bsxfun(@power,a,1:T);
aNew = aNew(:);

这可以通过简单有效的方式实现您的目标。 bsxfun是一种比其他方法更有效的编写扩展的方法,比如repmat,ndgrid和meshgrid。

我编写的代码确实假设a是一个列向量,就像你构造它一样。

答案 1 :(得分:2)

我们的想法是使用meshgrid创建两个大小为n x T的数组:

[n_mesh, t_mesh] = meshgrid(a, 1:T);

现在n_mesh是一个数组,其中每一行都是a的副本,t_mesh是一个数组,其中每列都是1:T

现在,您可以对它们使用按元素操作来创建所需内容:

aNew = n_mesh .^ t_mesh;