是否可以取一个数字并获得MATLAB中每个数字的值?最后,我想让每个数字成为一个字符,所以例如101将成为first = '1', second = '0', third = '1'
。我在想这可以使用if语句和逻辑AND来完成,即
if number & 1 == 1
third = '1'
等。但是我可以看到逻辑AND在MATLAB中不能这样工作。我愿意接受像我这样的建议或者我不想要的东西。如果相关,我的数字将始终只有1或0。
答案 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