我有一个1 x N双数组,我想合并它成为1 x 1数组。
E.g。
K = [0,1,1,1];
我希望K成为K = [0111];
我该怎么办?
答案 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