2011-04-22 39 views
3

所以我在Matlab中工作,并试图了解字符串如何在Matlab中工作时遇到了一个真正的问题。Matlab将字符串“aaa”转换为[“a”,“a”,“a”]数组

基本上我试图加载一个字符串到它的二进制版本的双数组中。

所以基本上我想加载“a”并得到[0 1 1 0 0 0 0 1]。

我有以下以下字符串转换为其二进制表示,但这只会导致我具有“a”= [“01100001”],当我将其转换为数组和[1100001]转换为数字时使用str2num

function loadString(obj, string) 
     binaryString = reshape(dec2bin(string, 8), 1, []); 

    end 

所以基本上我正在寻找一种方式来将字符串转换为字符数组,即“AAA” - > [“一”“一”“一”。这样我将binaryString转换为[“0”“1”“1”“0”“0”“0”“0”“1”]],然后使用str2num转换该数组。

回答

4

这是你在找什么:

z = dec2bin('abc',8)' 
z1 = z(:)' 
z2 = arrayfun(@str2double, z1) 

z1 = 
011000010110001001100011 

z2 = 
    0  1  1  0  0  0  0  1  0  1  1  0  0  0  1  0  0  1  1  0  0  0  1  1 
+1

完美,谢谢!我告诉你,即使在C中我也没有发现字符串的更糟糕的表示形式 – 2011-04-23 00:36:19

+0

不错,那简短而甜蜜。我确实很乐意编写我的错综复杂的作品:) – abcd 2011-04-23 03:29:43

2

这是C丰富的版本优化:

z = reshape(dec2bin('abc', 8)', 1, []) - '0' 
+0

+1。我喜欢减去char零。这很光滑。 – 2011-04-25 11:16:03

相关问题