如何创建这样的矢量:
a = [a_1;a_2;...,a_n];
aNew = [a;a.^2;a.^3;...;a.^T].
是否可以在没有循环的情况下创建一个新的?
答案 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;