1

2 つの多項式を合計する組み込みの Matlab 関数を探しています。

例:

\ p_1(x) = 500x^5 + 400x^4 + 300x^3 + 200x^2 + 100x + 50 \ p_2(x) = \qquad\qquad\qquad\qquad\;\, 3x^3 + \quad 2x ^2 + \quad\;\, x + \;\;  5 \ p_s(x) = 500x^5 + 400x^4 + 303x^3 + 202x^2 + 101x + 55

p1(x) と p2(x) は、コード標準の Matlab ベクトルで表されます。

p1 = [500 400 300 200 100 50];
p2 = [3 2 1 5];

これら 2 つの多項式を合計して、組み込みの Matlab 関数を使用して ps(x) を取得するにはどうすればよいですか? 明示的な m-file 関数を書かずに?

4

4 に答える 4

4

単純。ちょっとした関数を書いて、それを leftpadz と呼びます。

leftpadz = @(p1,p2) [zeros(1,max(0,numel(p2) - numel(p1)))),p1];

だから私たちが持っているなら...

p1 = [500 400 300 200 100 50];
p2 = [3 2 1 5];
p3 = leftpadz(p1,p2) + leftpadz(p2,p1)
p3 =
   500   400   303   202   101    55
于 2012-05-09T12:46:44.187 に答える
3

もっと良い方法があることを願っています(おそらくこれをヘルパー関数に入れます)が、これはうまくいくようです:

[zeros(1, size(p1,2)-size(p2,2)) p2] + [zeros(1, size(p2,2)-size(p1,2)) p1]

ans =

   500   400   303   202   101    55
于 2012-05-09T12:37:12.230 に答える
0

これを試しましたか:

p1 = [500 400 300 200 100 50];
p2 = [0 0 3 2 1 5]; # refilling with 0

ps = p1 + p2;
于 2012-05-09T12:32:29.547 に答える