gpt4 book ai didi

matlab - sprintf ('%d' ,A) - '0' 是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:44 26 4
gpt4 key购买 nike

我正在寻找一种在 Matlab 中分隔数组数字的方法,即如果 A = 1024 那么我希望它是 A = [1, 0, 2, 4]

我在网上搜索了一下,找到这段代码(也贴在标题上):

sprintf('%d',A) - '0'  

转换 [1024] -> [1, 0, 2, 4]

它确实解决了我的问题,但我不明白,尤其是 - '0' 部分。有人可以解释一下这是如何工作的吗?

此外,如果我在 MATLAB 命令窗口中编写 sprintf('%d',A) + '0'(对于 A = [1024]),那么它会显示以下:

 97 96 98 100

这让我更加困惑,谁能解释一下?

最佳答案

它利用了在使用 - 运算符时从 char 数组自动转换为 double 数组的优势。请记住,每个字符都有一个 ascii 值,因此如果您键入double('0') 在命令行中,你会看到你得到 48 作为答案。 double('1024') 给你

ans =

49 48 50 52

sprintf('%d', A) 只是将整数转换为字符串(即 char 数组)。减号将两边加倍,所以你最终得到

double('1024') - double('0')

这是

[49, 48, 50, 52] - [48]

最终为 [1,0,2,4]

从这里应该清楚为什么添加 '0' 会导致 [97, 96, 98, 100]

关于matlab - sprintf ('%d' ,A) - '0' 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18121753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com