将1 x N数组合并到1 x 1数组,而不在MATLAB中使用循环

时间:2009-10-12 04:24:53

标签: matlab

我有一个1 x N双数组,我想合并它成为1 x 1数组。

E.g。 K = [0,1,1,1];

我希望K成为K = [0111];

我该怎么办?

3 个答案:

答案 0 :(得分:4)

这是一种可爱的方式:一行:

>> K = [1 2 3 4];
>> K*10.^(length(K)-1:-1:0)'
ans =
        1234

编辑:现在是新的超短路。

答案 1 :(得分:2)

由于您将一个零和一的数组合并为一个值,因此您将无法正确地将其表示为 double 值。这是因为当数字为双倍时,数字左侧的任何前导零都不会显示。但是,您可以将零和一串的字符串表示为字符数组。这样做的一个巧妙的小技巧如下:

>> K = [0,1,1,1];
>> char(K+'0')

ans =

0111

当你添加双精度矢量(K)和标量字符串('0')时,字符串会转换为它的ASCII / Unicode值(在这种情况下为48)。 K+'0'成为向量[48 49 49 49]CHAR函数将这些值更改为等效的ASCII / Unicode字符,从而创建一个字符数组。

答案 2 :(得分:0)

从你的例子中我猜你只想连接一个向量的元素(看到k=[0111]实际存储了数字111)。因此,如果你想保持原样,我们改为使用字符串:

>> K = [0,1,1,1];
>> str = sprintf('%d', K)
str =
0111
>> whos str
  Name      Size            Bytes  Class    Attributes
  str       1x4                 8  char