如何通过将数组转换为单个数字来保持前导零

时间:2015-02-25 10:22:34

标签: matlab

所以我的问题是,当我尝试组合来自不同列的数字时,前导零消失,这是我的代码:

Bthree= [0  0   1
9   1   2
0   5   7]


len=size(Bthree);
    A=[];
    for jj=1:len(1)
        s=int2str(Bthree(jj,1:3));
        s=s(s~=' ');
        A(jj,:)=[str2num(s)];
    end

输出

1
912
57

因为你可以看到前导零消失但我想零保持

期望的输出:

001
912
057

我可以这样做吗?感谢

2 个答案:

答案 0 :(得分:2)

如果您想保留前导零,则可能需要将数据存储为字符串:

Bcell = strrep(cellstr(num2str(Bthree)),' ','')

返回一个字符串的单元格数组。对于char数组,请执行以下操作:

Bchar = cell2mat(Bcell)

或者您也可以通过以下方式直接获取char数组:

Bchar = reshape(sprintf('%i',Bthree),size(Bthree))

返回:

Bcell = 

    '001'
    '912'
    '057'


Bchar =

001
912
057

由于你似乎不确定你是否真的需要前导零,这里有一个转换为双打的简短方法:

Bdouble = str2num(Bchar)

Bdouble =

     1
   912
    57

答案 1 :(得分:0)

int2str替换为num2str

然后您的代码应如下所示:

Bthree= [0  0   1;9   1   2;0   5   7];

A=[];
for jj=1:size(Bthree,1)
    s=num2str(Bthree(jj,1:3));
    A(jj,:)=[str2num(s)];
end