Algorithm 基于一种算法的全多元多项式码

Algorithm 基于一种算法的全多元多项式码,algorithm,matlab,matrix,Algorithm,Matlab,Matrix,我想根据我的算法为全多元多项式编写Matlab代码,如下所示: 假设我们有: A=[1 2 3 4; 5 6 7 8] 此处的输入维度为L=4,行数为M=2。 要生成一个完整的多元多项式,我需要使用卷积或bsxfunc内置函数。但根据我的定制算法,它有点不同: (当多项式的阶数等于2时,让我们这样写维数): 订单=2的所有术语如上所述。对于订单=3,我们有: X1.*(the first column of above) X2.*(the second column of above)

我想根据我的算法为全多元多项式编写Matlab代码,如下所示:

假设我们有:

A=[1 2 3 4;
   5 6 7 8]
此处的输入维度为L=4,行数为M=2。 要生成一个完整的多元多项式,我需要使用卷积或bsxfunc内置函数。但根据我的定制算法,它有点不同:

(当多项式的阶数等于2时,让我们这样写维数):

订单=2的所有术语如上所述。对于订单=3,我们有:

X1.*(the first column of above)
X2.*(the second column of above)
X3.*(the third column of above)
X4.*(the forth column of above)
加上之前的订单结果=2

当R=1时:M1是全多元多项式模式的项数

R=2  :    (adding previous terms to following terms)
X1 . M1=[X1.X1;X1.X2;X1.X3;X1.X4]  ,  X2 . M2=[X2.x2; X2.X3; X2.X4]  .......
我无法使用内置的
bsxfun
生成此命令。它需要避免重复的术语,因为当
x1
乘以
x2
时,我希望避免
x2
乘以
x1

最终结果应如下所示:

Res=[1    5;
     2    6; 
     3    7; 
     4    8; 
     1   25; 
     2   30; 
     3   35; 
     4   40; 
     4   36; 
     6   42; 
      ...  ;
   4^4 8^4];

如何为不同的维度和不同的顺序编写代码?

我不太确定是否一切都正确。但我想这就是你想要的。 它也许可以进一步矢量化

A = [ 1, 2, 3, 4 ; 
      5, 6, 7, 8 ];

L = length(A);
X = A(1,:);
Y = A(2,:);
for ii = 1:1:L-1
    X = [ X , A(1,:).^(ii+1)];
    Y = [ Y , A(2,:).^(ii+1)];
    if ii < L/2
    X = [ X , A(1,:).*circshift(A(1,:)',ii)'];
    Y = [ Y , A(2,:).*circshift(A(2,:)',ii)'];  
    end
end
基本上,除了附加的if条件外,它与使用
bsxfun
可以达到的效果相同。
这适用于不同的订单。对于不同的维度,我会把所有的东西都放到一个函数中,并将其级联

谢谢你的回答。但是,答案是错误的,因为你没有考虑三个词(也在发展更高的顺序),比如:(x1)*(x2)*(x3)。
A = [ 1, 2, 3, 4 ; 
      5, 6, 7, 8 ];

L = length(A);
X = A(1,:);
Y = A(2,:);
for ii = 1:1:L-1
    X = [ X , A(1,:).^(ii+1)];
    Y = [ Y , A(2,:).^(ii+1)];
    if ii < L/2
    X = [ X , A(1,:).*circshift(A(1,:)',ii)'];
    Y = [ Y , A(2,:).*circshift(A(2,:)',ii)'];  
    end
end
 results =
   1           5
   2           6
   3           7
   4           8
   1          25
   4          36
   9          49
  16          64
   4          40
   2          30
   6          42
  12          56
   1         125
   8         216
  27         343
  64         512
   1         625
  16        1296
  81        2401
 256        4096