MATLAB:如何向量化一百万个值的typecast()

时间:2018-07-03 21:06:04

标签: matlab

我有一个uint8类型的数据集“数据”,具有100万行和16列。我正在使用以下代码将它们转换为“双精度”值。如何“矢量化”它以使其更快? / p>

for i = 1:length(data)
   value1(i) = typecast(data(i,1:8), 'double');
    value2(i) = typecast(data(i,9:16),'double');
end

1 个答案:

答案 0 :(得分:2)

由于每行代表一个double值,并且MATLAB按列存储数据,所以转置data(与.'一起使用)会使矩阵按正确的顺序包含值:在单个typecast调用中进行了转换。我们还需要将其整形为一个向量,该向量不会更改内存中数据的顺序(使用(:))。

value1 = data(:,1:8).';
value1 = typecast(value1(:), 'double');
value2 = data(:,9:16).';
value2 = typecast(value2(:), 'double');