Matlab sprintf(';%d';,A)';0';工作

Matlab sprintf(';%d';,A)';0';工作,matlab,Matlab,我在寻找一种在Matlab中分离数组数字的方法,即。 如果A=1024那么我希望它是A=[1,0,2,4] 我在网上搜索并找到了以下代码(也张贴在标题上): 它转换了[1024]->[1,0,2,4] 它确实解决了我的问题,但我不理解它,尤其是-“0”部分。 有人能解释一下这是怎么回事吗 另外,如果我在MATLAB命令窗口中编写sprintf(“%d',A)+“0”(对于A=[1024]),则它会显示以下内容: 97 96 98 100 这让我更加困惑,有人能解释吗?当使用-操作符时,它利用

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

我在网上搜索并找到了以下代码(也张贴在标题上):

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

它确实解决了我的问题,但我不理解它,尤其是
-“0”
部分。 有人能解释一下这是怎么回事吗

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

 97 96 98 100

这让我更加困惑,有人能解释吗?

当使用
-
操作符时,它利用了从字符数组到双数组的自动转换。请记住,每个字符都有一个ascii值,因此如果键入
double('0')
在命令行中,您将看到得到
48
作为答案。而
double('1024')
为您提供

ans =

   49   48   50   52
sprintf('%d',A)
只需将整数转换为字符串(即字符数组)。负号使两边都加倍,所以你最终得到

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

那是

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

结果是
[1,0,2,4]

从这里可以清楚地看出,为什么添加
'0'
会导致
[97、96、98、100]
命令
sprintf('%d',A)
将整数
A=1024
转换为数字的字符串表示形式,
'1024'

此外,matlab中的字符串实际上是一个字符数组,因此如果
a='1024'
那么
a(1)='1'

其余的解释来自于@Dan posted的答案。当数字运算(
+
-
*
//code>
mod
^
..)应用于字符数组时,它们将根据ASCII码转换为等效的数字表示形式,并将数组格式保留为双精度类型

ans =

   49   48   50   52