强制数组保持类型';双倍';在matlab中串联多个混合数字类型值时
在matlab中,当连接各种数值类型(如强制数组保持类型';双倍';在matlab中串联多个混合数字类型值时,matlab,Matlab,在matlab中,当连接各种数值类型(如uint64和uint32)时,是否有方法强制数组保持类型double 例如,以下代码生成了以下内容: >> timestamp = uint64(12); % 1x1 uint64 >> t_id = uint32(3); % 1x1 uint32 >> t_value = double(1.5); % 1x1 double >> frame = [ timestamp,
uint64
和uint32
)时,是否有方法强制数组保持类型double
例如,以下代码生成了以下内容:
>> timestamp = uint64(12); % 1x1 uint64
>> t_id = uint32(3); % 1x1 uint32
>> t_value = double(1.5); % 1x1 double
>> frame = [ timestamp, t_id, t_value ]; % 1x3 uint64
frame =
12 3 2
当我想要的时候:
frame =
12.000000000000000 3.000000000000000 1.500000000000000
我知道我可以使用double()
转换变量,但在我的应用程序中,数组要大得多,许多元素都是整数类型。有没有一种不用手动转换每个整数的方法
如果有帮助的话,变量是我的代码中
struct
s数组的字段。您可以轻松编写一个函数来完成转换。下面的函数可以做到这一点。但是,请注意,它们使用单元格(以便通过,允许任意数量的输入),因此它们可能不是很快
>> horzcatdouble( uint16([1 2]), 3.7 )
ans =
1.0000 2.0000 3.7000
>> catdouble(2, uint16([1 2]), 3.7 )
ans =
1.0000 2.0000 3.7000
>> horzcatdouble( uint16([1 2]), 3.7 )
ans =
1.0000 2.0000 3.7000
>> catdouble(2, uint16([1 2]), 3.7 )
ans =
1.0000 2.0000 3.7000
是的,我想是这样的。我问道,因为执行时间是我关心的问题,所以有一种隐含的方法可以做到这一点。我将处理包含~100000-~10000000个结构的数据集,这些数据集需要上述某种形式的结构。也就是说,这个解决方案只需手动转换就可以在100微秒内完成,所以我对此非常满意。谢谢