Matlab只需要4位数值进行计算

时间:2014-04-04 16:52:00

标签: matlab

我编写了一个代码,用于在矩阵中组合零。例如,如果有3个零,那么l将等于0.3并且0.3将被放入矩阵B.如果有任何其他数字,则它们是放入矩阵B,没有任何改变。

k=1;l=0;i=1;
A=J;
xx=size(A,2);
while(i<=xx)
    if(A(i)~=0)
        if(i==1 || A(i-1)~=0)
            B(k)=A(i);
            k=k+1;
            i=i+1;
        else
            if(A(i-1)==0)
               str=num2str(l);
               if(mod(l,10)==0)
                  str=fliplr(str);
                  str2=strcat('0.',str);
               else
                  str2=strcat('0.',str);
               end;
               num=str2num(str2);
               B(k)=num;
               k=k+1;
               B(k)=A(i);
               k=k+1;
               i=i+1;  
               l=0;
            end;
         end;
    else
        l=l+1;
        i=i+1;
    end;
end;
if(l~=0)
    str=num2str(l);
    str2=strcat('0.',str);
    num=str2num(str2); 
    B(k)=num;`
end;  

这里,'l'的值变为等于23440并且仅取值2344.So而不是0.04432,matlab将其存储为0.2344。如何使'l'取值23440?

1 个答案:

答案 0 :(得分:1)

如果数组以零结尾(或仅包含 零),则不执行语句if(mod(l,10)==0) ...。而是执行脚本末尾if(l~=0)下的分支,并且不使用函数fliplr

您应该编写一个函数来将l作为输入,并返回应附加到B的数字。然后,您可以在需要处理零的两个位置调用该函数。 (另外,我会将l重命名为看起来不像1的内容,但这并不是脚本无法正常工作的原因。)