Matlab如何将字符串"aaa"转换为["a", "a", "a"]数组

3

我正在使用Matlab进行工作,但在理解Matlab中字符串的工作原理方面遇到了一些问题。

基本上,我正在尝试将一个字符串加载到双精度数组中的二进制版本中。

所以,我想要加载“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" -> ["a" "a" "a"]。然后我将二进制字符串转换为["0" "1" "1" "0" "0" "0" "0" "1"],再使用str2num函数将其转换为数字。

2个回答

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语言中,我也没有找到比这更糟糕的字符串表示方式。 - Michael Allen
不错,简短而精炼。不过我写那个复杂的代码还是很有乐趣的 :) - user616736

2
这是Rich C版本的优化:
z = reshape(dec2bin('abc', 8)', 1, []) - '0'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接