我正在寻找一个内置的Matlab函数,它将两个多项式相加。
示例:
p1(x)和p2(x)用代码标准Matlab向量表示:
p1 = [500 400 300 200 100 50];
p2 = [3 2 1 5];
如何使用内置的Matlab函数将这两个多项式求和得到ps(x);没有编写明确的m文件函数?
答案 0 :(得分: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
答案 1 :(得分:3)
简单。写一个小函数,称之为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
答案 2 :(得分:1)
function c = polyadd( a, b)
assert( isrow(a))
assert( isrow(b))
maxL = max( [length(a), length(b)]);
a = [ zeros( 1, maxL - length(a)), a];
b = [ zeros( 1, maxL - length(b)), b];
c = a +b ;
end
答案 3 :(得分:0)
你试过这个:
p1 = [500 400 300 200 100 50];
p2 = [0 0 3 2 1 5]; # refilling with 0
ps = p1 + p2;