Создание вектора в MATLAB с рисунком - PullRequest
3 голосов
/ 30 декабря 2010

Как мне создать такой вектор:

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

Можно ли создать New без цикла?

Ответы [ 2 ]

7 голосов
/ 30 декабря 2010

То есть, вы хотите, чтобы разные силы были вытянуты в вектор?Я хотел бы создать массив, где каждый столбец массива имеет различную степень.Затем выведите его в вектор.Примерно так ...

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

Это делает то, что вы хотите, простым и эффективным способом.bsxfun - более эффективный способ написания расширения, чем другие методы, такие как repmat, ndgrid и meshgrid.

Код, который я написал, предполагает, что a является вектором столбца, как вы его построили.*

2 голосов
/ 30 декабря 2010

Идея состоит в том, чтобы использовать meshgrid для создания двух массивов размером n x T:

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

Теперь n_mesh - это массив, где каждая строка является дубликатом a, а t_mesh - это массив, где каждый столбец равен 1:T.

Теперь вы можете использовать для них поэлементную операцию, чтобы создать то, что вам нужно:

aNew = n_mesh .^ t_mesh;
...