强制数组保持类型';双倍';在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,

在matlab中,当连接各种数值类型(如
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微秒内完成,所以我对此非常满意。谢谢