将向量表示的多项式用字符串输出的通用函数示例+注释及修改

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行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值