function s=pprintf (p)
%pprintf:for polynomial printf.
%pprintf(p) printf p as string 将向量表示的多项式用字符串输出
%2019.10.26
if nargin>1 %nargin是判断变量个数的函数
error('Too much input arguments')
end
while p(1)==0 %将高次的零去掉
p(1)=[];
end
l=length(p);
if l==0
s='0';
elseif l==1
s=num2str(p(1));
elseif l==2
s=strcat(num2str(p(1)),'x+',num2str(p(2)));%strcat 连接字符串函数,因为只有两位,所以是x+
elseif l>2 %考虑多项式大于2位情况
for i=1:l
if i==1
if p(i)==1 %最高位的系数是1
s=strcat('x^{',num2str(l-i),'}'); %只需要拼接最高次幂,{}是cell型数组
else
s=strcat(num2str(p(i)),'x^{',num2str(l-i),'}');%多一个系数
end
elseif i==l %i是最后一位,常数项
s=strcat(s,'+',num2str(p(i)));
% elseif i==l-1 %倒数第二位,x项,个人人为该句也能省掉
% s=strcat(s,'+',num2str(p(i)),'x');
else %中间项
if p(i)==0 %每一项系数是0,pass,不输出东西
elseif p(i)==1
s=strcat(s,'+','x^{',num2str(l-i),'}'); %中间项系数是1,不输出系数
else
s=strcat(s,'+',num2str(p(i)),'x^{',num2str(l-i),'}');%从最高项开始一项一项拼接
end
end
end
end
%% 注意事项
%因为全是以字符串输出的形式,所以即使是0也要单独处理,因为字符串形式的0也会输出;
%所以编程思路要区分高次项为0,常数项,幂次项系数为1(因为系数1要省略);
%书本原题解析上有两处错误:若中间项系数为1,没有考虑省去,已修改见32-33行;倒数第二项可以省略,见28-29行。
将向量表示的多项式用字符串输出的通用函数示例+注释及修改
最新推荐文章于 2021-10-27 13:35:02 发布