Date: Apr 18, 2013 10:29 PM
Author: Nasser Abbasi
Subject: Re: vector and array element multiplication

On 4/18/2013 8:26 PM, Gorbeña wrote:
> Hi,
> I would like to create a second order polynomial from a vector or a matrix. Each element
>of the vector or matrix corresponds to an independedent variable.
>
> Given vector A, where A = [x1 x2 x3], I want the following result:
>
> [x1 x1² x1*x2 x1*x3 x2 x2*x1 x2² x1*x3 x3 x3*x1 x3*x2 x3²]
>
> In case I have matrix B = [a1 a2 a3; b1 b2 b3], the desired result will be:
>
> [a1 a1² a1*a2 a1*a3 a2 a2*a1 a2² a1*a3 a3 a3*a1 a3*a2 a3²;
> b1 b1² b1*b2 b1*b3 b2 b2*b1 b2² b1*b3 b3 b3*b1 b3*b2 b3²]
>
> Does anybody knows how to do this?
>
> Thanks
>


You can make each poly by multiplying each row by itself but after
transposing. (i.e. do an outer product)

-----------------
syms x1 x2 x3
V = [x1 x2 x3] %one row
C = V.'*V;
C = [V C(:).']
---------------------

[ x1, x2, x3, x1^2, x1*x2, x1*x3, x1*x2, x2^2, x2*x3, x1*x3, x2*x3, x3^2]


So for a matrix, just do the above outer product for its of its rows.

--Nasser