一种将数字解构为数字的方法

时间:2014-09-01 10:02:06

标签: matlab

是否可以取一个数字并获得MATLAB中每个数字的值?最后,我想让每个数字成为一个字符,所以例如101将成为first = '1', second = '0', third = '1'。我在想这可以使用if语句和逻辑AND来完成,即

if number & 1 == 1 third = '1'

等。但是我可以看到逻辑AND在MATLAB中不能这样工作。我愿意接受像我这样的建议或者我不想要的东西。如果相关,我的数字将始终只有1或0。

2 个答案:

答案 0 :(得分:4)

你可以通过减去字符串

在没有for循环的情况下完成这项工作
number = 10156;
digits = num2str(number) - '0'
digits =

 1     0     1     5     6

现在digits是一个向量,其中的元素是您的数字作为字符。我不认为为每个数字使用一个变量是个好主意,并且没有这样做的优雅方式。您很可能会手动执行此操作

[first, second, third] = deal(z(1), z(2), z(3))

如果您的数字不仅可能是正整数(正如我从您的示例中读取的那样),您可以使用绝对值删除该符号并删除小数点(请参阅Divakars注释)。

digits = strrep(num2str(abs(number)),'.','') - '0'

还要检查Divakars评论如何避免交易 - 如果您愿意的话。

答案 1 :(得分:1)

使用num2str及其倒数str2num,例如:

Number=1234;

NumberString=num2str(Number);

NumDigits=zeros(1,length(NumberString));

for ii=1:length(NumberString)

    NumDigits(ii)=str2num(NumberString(ii));

end

结果

NumDigits(3)

ans=3