Algorithm 基于一种算法的全多元多项式码
我想根据我的算法为全多元多项式编写Matlab代码,如下所示: 假设我们有: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)
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