我有一个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
答案 0 :(得分:2)
由于每行代表一个double
值,并且MATLAB按列存储数据,所以转置data
(与.'
一起使用)会使矩阵按正确的顺序包含值:在单个typecast
调用中进行了转换。我们还需要将其整形为一个向量,该向量不会更改内存中数据的顺序(使用(:)
)。
value1 = data(:,1:8).';
value1 = typecast(value1(:), 'double');
value2 = data(:,9:16).';
value2 = typecast(value2(:), 'double');