MATLAB: Как векторизовать typecast () миллиона значений - PullRequest
0 голосов
/ 04 июля 2018

У меня есть набор данных «data» типа uint8, который содержит 1 миллион строк и 16 столбцов. Я использую следующий код для преобразования их в «двойные» значения. Как мне «векторизовать» его, чтобы сделать его быстрее?

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

1 Ответ

0 голосов
/ 04 июля 2018

Поскольку каждая строка представляет значение double, а MATLAB хранит данные по столбцам, транспонирование data.') приводит к тому, что матрица содержит значения в правильном порядке для преобразования в один typecast вызов. Нам также необходимо изменить вектор, который не меняет порядок данных в памяти (с (:)).

value1 = data(:,1:8).';
value1 = typecast(value1(:), 'double');
value2 = data(:,9:16).';
value2 = typecast(value2(:), 'double');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...