如何在MATLAB中从字符串创建数值数组?

时间:2011-12-21 07:11:30

标签: arrays string matlab

如何在Matlab中从字符串创建数值数组?

例如我有这样一个字符串:

>> str = dec2bin(7);
s = 111

我需要数组[1 1 1]。怎么做?

我看到strread函数strread 但是我很难将它用于非空格字符串输入。

5 个答案:

答案 0 :(得分:2)

刚回答了另一个question,发现其中的一部分可能会有用。

您实际上可以将此类字符串转换为逻辑向量:

a = str == '1';

您可以将其转换为其他类型,例如double(a)

答案 1 :(得分:2)

标准解决方案是使用yuk发布的解决方案,

a = (str == '1');

产生逻辑结果。如果你需要一个双,

a = double(str == '1');

甚至只是:

a = +(str == '1');

也许最简单的解决方案就是这个:

a = str - 48;

虽然我认为最后一点是最不明显的。我更喜欢易于阅读和理解目的的代码。第二个解决方案,恕我直言,最能满足这一目标。

答案 2 :(得分:1)

我想,天真地:

n = length(s);
myArray = zeros(1,n)
for i = 1:n
myArray(i) = double(s(i));

其中“double()”是用于将字符串元素更改为双精度数的命令,如果这确实是您想要的。

答案 3 :(得分:1)

答案是使用“bitget”

> x = bitget(7,1:3);

> class(bitget(7,1:3))  
  ans =  

  double

结果是双倍。

答案 4 :(得分:1)

strreada = strread('123', '%c')