Matlab sprintf(';%d';,A)';0';工作
我在寻找一种在Matlab中分离数组数字的方法,即。 如果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 这让我更加困惑,有人能解释吗?当使用-操作符时,它利用
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