gpt4 book ai didi

algorithm - 基于算法的完全多元多项式代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:29:41 25 4
gpt4 key购买 nike

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

假设我们有:

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

这里的输入维度是L=4,行数是M=2。要制作完整的多元多项式,我想使用卷积或 bsxfunc 内置函数。但是根据我定制的算法有点不同:

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

[X1.X1  X1.X2  X1.X3  X1.X4 ; X2.X2  X2.X3  X2.X4 ; X3.X3  X3.X4 ;  X4.X4]

order=2 的所有条款如上。对于 order=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)

加上 order=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

结果 = [ X' , Y' ]

导致:

 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

基本上它与使用 bsxfun 可以达到的相同,除了额外的 if 条件。这适用于不同的订单。对于不同的维度,我会将所有内容放入一个函数中并将其级联。

关于algorithm - 基于算法的完全多元多项式代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com